在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()
在调用它们之后必须进行一些处理.
使用匿名嵌套函数可能吗?
我不担心采取明确的步骤来确保b()
并且c()
仅被调用a()
.
担心你在课堂上公开的公共方法是有意义的,因为你提供了一个外部世界的界面,可能是那些无法访问你班级源代码的人(或者至少不是我不想担心你班级的实施细节.
但是,在你的课堂里,无论你想要什么原因,你都应该随意拥有你想要的任何私人方法.代码重用是创建新私有方法的一个原因,但创建多个较小的,一次性使用的方法来分解更大的私有方法也是完全有效(和常见)的原因.
除此之外,为您的代码的未来维护者提供一个简单的评论,例如:
//this method should only be called by a() private void b() { ... }
比这里提出的大多数其他解决方案更容易理解.
使用委托你可以做:
public voidMyFunction() { FuncmyFunction=(s)=>Console.WriteLine(s); foreach(string str in myStringList) { myFunction(str); } }