我处在一个变量需要由两个函数共享的情况。一种方法是使其全球化。但是通过使其成为全局,其他函数也可以访问该变量。我希望仅通过选定的函数访问该特定变量。是否有任何方法可以通过限制使用全局或以任何其他方式使用它来实现此类功能?
答案 0 :(得分:2)
您可以在函数之间作为参数传递它。
答案 1 :(得分:1)
除了“经典”方式,您还可以使用闭包操作:
public class ClosureProvider {
private Foo shared;
public Func<object> GetFirst() {
return new Func<object>(() => { /* Use shared and whatever else */ });
}
public Action<Bar> GetSecond() {
return new Action<Bar>(bar => { /* Use shared and whatever else */ });
}
}
c#编译器将为您构建所需的基础结构,并且两个返回的函数可以访问共享以及您要使用的任何其他内容