c#中变量的作用域

时间:2023-03-09 21:40:45
c#中变量的作用域

C#中的作用域和javascript中的作用域还是有区别的.呵呵

class Person
{
/*
*确定C#变量作用域的2个规则.
1.类的字段所处的作用域等同于该字段所属类所在的作用域;
* 2.局部变量的作用域仅限于声明它的方法的或循环体内部,以大括号{}为界.
*/
public string MyVar;//作用域和它所属的类的作用域相同 public void DoSomething()
{
//someVar变量作用域仅限在DoSomething()方法内部,以{}为届
var someVar = "some value";
int[] someVars = { , , , }; foreach (var item in someVars)
{
Console.WriteLine(item);
}
//这里将无法访问foreach循环体内部定义的item变量,编译器会报错
//Console.WriteLine(item); /*
OtherPerson的myString字段的作用域与OtherPerson对象的作用域相同.
*/
OtherPerson oPer = new OtherPerson();
oPer.myString = "思思博士";
}
}
class OtherPerson
{
public string myString;
}
/*
关于变量作用域冲突的现象.
* 1.同一个作用域内,存在两个同名的变量,这里不关心变量的类型是否相同.如果存在这种情况,编译器将会报错,编译将无法继续.
* 2.局部变量和字段变量同名,那么局部变量会将同名的字段级变量隐藏,就是说在局部变量的作用域内,局部变量的值覆盖了字段级变量的值.
*/
class Human
{
public string myVar = "相信未来";
public void DoSomthing()
{
var myVar = "我相信,我就是我,我相信明天";
int[] someVars={,,,,};
foreach (var item in someVars)
{
//这个地方声明的item会报错.
//string item = "和循环重的作用域冲突!";
Console.WriteLine(item);
}
Console.WriteLine(myVar);//我相信,我就是我,我相信明天(局部变量)
Console.WriteLine(this.myVar);//相信未来(字段级的变量) }
}