在C#的下面粗略的示例代码中,我必须在条件中声明一个字符串,我无法从该大括号中访问它
if(//some condition)
{
string value1 = "something";
}
//push to database value1
在上面的代码编译器中说The name 'value1' does not exists in the current context
我需要声明value1
,以便必须在整个页面中访问它。我试过了protected value1
,但这也行不通。我讨厌将它作为一个单独的类使用。无论如何要在全球范围内宣布吗?
答案 0 :(得分:5)
在大括号内声明时,只在大括号内(也就是块)给它范围。
在大括号之外声明它以增加范围。
在此示例中,它将在声明块的范围内,并且可以在if
语句之外使用:
string value1;
if(//some condition)
{
value1 = "something";
}
//push to database value1
我建议阅读this article以了解C#中的范围。
答案 1 :(得分:1)
C#是块作用域的,所以你在if块
中定义了那个变量适当的范围示例:
string value1 = someCondition ? "something" : string.Empty;
或
string value1 = string.Empty;
if (someCondition)
{
value1 = "something";
}
或
string value1;
if (someCondition)
value1 = "something";
else
value1 = string.Empty;
答案 2 :(得分:0)
您需要声明if条件范围之外的字符串,以便您可以在if
之外访问它string value1 = String.Empty;
if(//some condition)
{
value1 = "something";
}
答案 3 :(得分:0)
在条件之外声明value1
。
string value1;
if(//some condition)
{
value1 = "something";
}
答案 4 :(得分:0)
试试这个:
string value1 = string.Empty;
if (//condition)
value1 = "something"
答案 5 :(得分:0)
string value1= ""
if(some condition)
{
value1 = "something";
}
答案 6 :(得分:0)
我无法从该大括号中访问它
这就是C#的工作原理。你在一对大括号内定义的任何东西都不能存在于它之外。你必须在大括号开始前将其缩小。
答案 7 :(得分:0)
空引用,检查是否未设置值
//返回页首 private string _value; //块 _value =条件? “something”:null;
现在你有一个可以为null的值来测试(null = not set)和一个可以“全局”消耗的值。