c# - 在类中初始化变量的最佳实践,可用于 C# 中的所有方法
问题描述
我可以拥有所有类方法都可以访问和初始化的变量吗?我有一个只有方法的类,我没有从中创建对象,但我希望所有方法都有一些相互变量,例如,在这种情况下
字典回调
class Person
{
public static void do(Button va, Dictionary<string, CallBack> callBacks)
{
callBacks["do1"].Press(va);
callBacks["do2"].Press(va);
}
public static void go(dynamic va, Dictionary<string, CallBack> callBacks)
{
callBacks["go1"].Press(va);
callBacks["go2"].Press(va);
}
public static void sit(dynamic va, Dictionary<string, CallBack> callBacks)
{
callBacks["sit1"].Press(va);
callBacks["sit2"].Press(va);
}
public static void eat(dynamic va, Dictionary<string, CallBack> callBacks)
{
callBacks["eat1"].Press(va);
callBacks["eat2"].Press(va);
}
}
我从调用类传递callBacks,但我宁愿在人员类中定义它或从父类访问它。
在父级中,我将其定义为:
callBacks = someVariable.other;
解决方案
如果您的回调字典相同并且没有更改,则可以将其声明为类的静态只读属性Person
:
class Person
{
public static readonly Dictionary<string, CallBack> Callbacks =
new Dictionary<string, CallBack>
{
{"do1", new CallBack(....)},
{"do2", new CallBack(....)},
.....
};
public static void do(Button va)
{
Callbacks["do1"].Press(va);
Callbacks["do2"].Press(va);
}
.......
}
其他类将能够通过Person.Callbacks
语法访问它。
UPD
如果您需要从上面传递它,那么我建议您将方法从静态更改为实例并通过构造函数传递回调:
class Person
{
public Person(Dictionary<string, CallBack> callbacks)
{
Callbacks = callbacks;
}
private readonly Dictionary<string, CallBack> Callbacks;
public void do(Button va)
{
Callbacks["do1"].Press(va);
Callbacks["do2"].Press(va);
}
.......
}
推荐阅读
- python - Python:使用 gmap.marker_layer 选项在地图上标记标签无法使用 hover_text
- tsql - 我可以在计算列选择案例中抛出错误吗?
- java - 为什么 Java 没有 async/await?
- javascript - 一起执行功能
- xamarin - 选择器选定的项目在零位置显示类名
- laravel-5 - Phpspreadsheet 将帐号四舍五入并从开头删除 0
- angularjs - 如何使用量角器测试 AngularJs,使用“粗体”修饰符可编辑内容,自 webdriver 更新后损坏
- spring - 如果未设置或为空,则默认注入环境变量
- java - 在 for 循环中转换成绩
- android - Android导航项目不显示片段