我面临一个非常奇怪的问题,当我尝试在string
类的方法内部用public关键字声明类型为变量的变量时,编译器将在没有适当说明的情况下抛出编译时错误。
考虑下面的代码:
public class MyClass
{
public string publicVarInClass= null; // No error here. Works fine
public void MyMethod()
{ // Error shown here is "Expected } "
public string publicVarInMethod = null; // not allowed, but no error is shown in this line. WHY?
try // Error shown here is Invalid token 'try' in class, struct or interface declaration
{
//some code here
}
}
}
根据我的考虑,当我们在一个方法内部将一个变量除以public时,它除了该方法是一个类,结构或接口外。
这就是我的问题是,为什么C#限制我们将变量声明为public内部方法。有什么问题吗?
变量和字段之间存在差异。只有字段具有访问保护,而不能在所有外部方法主体中访问变量。
C#中的“公共变量”称为字段。C#允许字段声明仅出现在类或结构体中。字段是对象定义的一部分,可以附加到实例,也可以在所有实例之间共享。
另一方面,方法内部的变量不是字段。它们位于方法主体本地,因此不需要访问保护。它们的生存期和范围在方法内部受到限制,因此该方法之外的任何代码都无法访问局部变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句