如何声明一个全局使用的变量
How to declare a variable for global use
我在论坛上搜索了类似的问题,据我所知,应该避免使用全局变量。对我来说这还不合逻辑,因为我是编程新手。如果我理解正确,静态变量应该可以完成我正在寻找的工作。
I've made a combobox of four choices in the mainwindow and when a comboboxitem is selected, variable b is declared.这是在 private void SelectionChanged.
中完成的
选择声明变量b的comboboxitem时,会弹出一个usercontrol。我想在我的程序中进一步使用变量 b,但我无法访问它。我试图在代码的开头声明 static int b;
,但我不确定我是否正确理解了静态变量的使用。有人可以帮我吗?
可以创建全局使用的变量。只需创建静态字段或 属性:
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";
}
}
要创建一个"global variable",它应该是public和static,并在public 静态 class。在 .NET 中,这是声明常量的常用方法(例如 Math.PI),但它们不是 变量!
public static class EveryoneCanSeeMe
{
public static object EveryOneCanModifyMe;
}
非public 变量仅在声明它们的 classes 或方法中可见。
ps: 使用全局变量很糟糕
完全避免使用全局变量和 static
关键字,除非您 100% 确定没有其他地址可以解决您的解决方案(有时您可能被迫使用静态变量,通常用于遗留代码修补程序)。
- Statics/globals 使代码紧密耦合
- 打破了 OOD 原则(通常是依赖注入、单一职责原则)
- 类型初始化过程并不像许多人想象的那么简单
- 有时无法通过单元测试覆盖代码或破坏良好测试的 ATRIP 原则(隔离原则)
所以建议:
- 首先了解问题,roots,你要达到什么目的
- 检查您的设计
你可以这样做
App.Current.Properties["valueTobestored"] = valueTobestored;
然后像
一样访问它
string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]);
我在论坛上搜索了类似的问题,据我所知,应该避免使用全局变量。对我来说这还不合逻辑,因为我是编程新手。如果我理解正确,静态变量应该可以完成我正在寻找的工作。
I've made a combobox of four choices in the mainwindow and when a comboboxitem is selected, variable b is declared.这是在 private void SelectionChanged.
选择声明变量b的comboboxitem时,会弹出一个usercontrol。我想在我的程序中进一步使用变量 b,但我无法访问它。我试图在代码的开头声明 static int b;
,但我不确定我是否正确理解了静态变量的使用。有人可以帮我吗?
可以创建全局使用的变量。只需创建静态字段或 属性:
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";
}
}
要创建一个"global variable",它应该是public和static,并在public 静态 class。在 .NET 中,这是声明常量的常用方法(例如 Math.PI),但它们不是 变量!
public static class EveryoneCanSeeMe
{
public static object EveryOneCanModifyMe;
}
非public 变量仅在声明它们的 classes 或方法中可见。
ps: 使用全局变量很糟糕
完全避免使用全局变量和 static
关键字,除非您 100% 确定没有其他地址可以解决您的解决方案(有时您可能被迫使用静态变量,通常用于遗留代码修补程序)。
- Statics/globals 使代码紧密耦合
- 打破了 OOD 原则(通常是依赖注入、单一职责原则)
- 类型初始化过程并不像许多人想象的那么简单
- 有时无法通过单元测试覆盖代码或破坏良好测试的 ATRIP 原则(隔离原则)
所以建议:
- 首先了解问题,roots,你要达到什么目的
- 检查您的设计
你可以这样做
App.Current.Properties["valueTobestored"] = valueTobestored;
然后像
一样访问它string mystoredValue = Convert.ToString(App.Current.Properties["valueTobestored"]);