当前位置:  开发笔记 > 编程语言 > 正文

是否可以仅从另一个函数中调用函数?

如何解决《是否可以仅从另一个函数中调用函数?》经验,为你挑选了3个好方法。

在C#中是否可以创建一个只能从另一个函数中调用的函数?

你可以这样做吗?

private void a()
{


b();
c();
...do something else

private void b()
{
  ..do something but can only be called from a()
}

private void c()
{
  ..do something but can only be called from a()
}

}

我想要这样做的原因是该功能b()c()拆分一些实现细节,a()它们只是更清晰,更容易在自己的范围内阅读.但是,这些函数对于类没有用,因为a()在调用它们之后必须进行一些处理.



1> Bjorn..:

使用匿名嵌套函数可能吗?



2> AwesomeTown..:

我不担心采取明确的步骤来确保b()并且c()仅被调用a().

担心你在课堂上公开的公共方法是有意义的,因为你提供了一个外部世界的界面,可能是那些无法访问你班级源代码的人(或者至少不是我不想担心你班级的实施细节.

但是,你的课堂里,无论你想要什么原因,你都应该随意拥有你想要的任何私人方法.代码重用是创建新私有方法的一个原因,但创建多个较小的,一次性使用的方法来分解更大的私有方法也是完全有效(和常见)的原因.

除此之外,为您的代码的未来维护者提供一个简单的评论,例如:

//this method should only be called by a()
private void b()
{
    ...
}

比这里提出的大多数其他解决方案更容易理解.



3> JoshBerke..:

使用委托你可以做:

public voidMyFunction()
{

   Func myFunction=(s)=>Console.WriteLine(s);

   foreach(string str in myStringList)
   {
      myFunction(str);
   }
}

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有