如何声明全局使用的变量
本文关键字:变量 全局 何声明 声明 | 更新日期: 2023-09-27 18:32:29
我已经在论坛上搜索了类似的问题,据我了解,全局变量是要避免的。对我来说,这还不合逻辑,因为我是编程新手。如果我正确理解了所有这些,那么静态变量应该可以完成我正在寻找的工作。
我在主窗口中做了一个包含四个选项的组合框,当选择一个组合框项时,会声明变量 b。这是在private void SelectionChanged.
中完成
选择声明变量 b 的组合框项时,将弹出一个用户控件。我想在我的程序中进一步使用变量 b,但我无法访问它。我试图在代码开头声明static int b;
,但我不确定我是否正确理解了静态变量的使用。有人可以帮我吗?
避免使用
全局变量和关键字static
除非您 100% 确定您的解决方案没有其他地址(有时您可能会被迫在旧代码热修复程序中使用通常的静态)。
- 静态/全局变量使代码紧密耦合
- 违反 OOD 原则(通常是依赖关系注入、单一责任原则)
- 不像许多人想象的那么简单
- 有时无法通过单元测试覆盖代码或违反 ATRIP 原则以进行良好的测试(隔离原则)
所以建议:
- 首先了解问题,根源,你将实现什么
- 查看您的设计
可以创建一个全局使用的变量。只需创建静态字段或属性:
public static class YourStorage
{
public static object Storage1;
public static string StringStorage;
}
无论您想在何处,都可以从该存储中设置或获取值:
public class AnotherClass
{
private void GetDataFromStorage()
{
string getValue=YourStorage.StringStorage;
}
private void SetDataFromStorage()
{
YourStorage.StringStorage="new value";
}
}
你可以这样做
App.Current.Properties["valueTobestored"] = valueTobestored;
然后像
string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]);
要创建"全局变量",它应该是公共的和静态的,并在公共静态类中声明。 在 .NET 中,这是声明常量(例如 Math.PI)的常用方法,但它们不是变量!
public static class EveryoneCanSeeMe
{
public static object EveryOneCanModifyMe;
}
非公共变量仅在声明它们的类或方法中可见。
PS:使用全局变量非常糟糕。