我对公共变量在类中的工作方式有些困惑。我知道可以在不打电话的情况下访问公共变量,而私人变量则不能。
如果您具有同一类的多个实例,并且在每个类别中,您都会给公共变量一个不同的值,那么我认为每个类实例都有其自己的独特版本,每个版本都具有不同的值。
我的困惑是这个
如果您更改公共变量的值而不调用类的新实例,会发生什么?
班级的所有未来新实例都将从该变量设置为您将其设置为任何设置的任何新实例,而无需首先调用课程?如果没有,会发生什么?
我认为您以某种方式将公共变量和静态变量混合在一起。以下语句:
可以访问公共变量而不调用类
对于非静态变量而言是完全错误的,它们可能是私人或公共的。
如果您更改类实例的公共变量,它将仅更改,对其他现有实例或将来的实例没有任何影响。
另一方面,静态变量确实可以在没有类实例的情况下调用,并且更改它们具有"全局"效果,而与类实例无关。
(如果您有任何特定的代码,并且需要进一步的指导,请发布它)
在诸如c#之类的语言中,你不能这样做。
访问类本身的任何(非静态)变量,而不是它的实例
将导致编译器错误。
也许某些示例代码会有所帮助;无法访问私人变量,因此我猜您的术语已经混杂在一起。在下面的样本中,公开属性属性被声明为静态;简而言之,这意味着您的应用程序中只有一个副本。创建参考的每个实例的每个实例。公共属性是实例属性;这意味着每个审查计划的每个实例都有其自己的数据副本。
public class ExampleClass
{
public static int PublicStaticInt { get; set; }
public int PublicInt { get; set; }
}
private static void Main(string[] args)
{
for (int i = 0; i < 5; i++)
{
var example = new ExampleClass();
Console.WriteLine("PublicStaticInt = " + ExampleClass.PublicStaticInt.ToString() + ", PublicInt = " + example.PublicInt);
ExampleClass.PublicStaticInt++;
}
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
创建同一类的新实例时,每个实例都有每个数据成员的值。例如
class A
{
public int a;
public int b;
public A()
{
a=0;
b=0;
}
}
当我创建类似A类的实例
时A a11 =new A();
A b11 = new A();
现在,如果我更改A11的值,它将永远不会更改B11的值,如果我更改B11的值,它将永远不会更改A11的值。
班级的所有未来新实例都将从该变量设置为您将其设置为任何设置的任何新实例,而无需首先调用课程?如果没有,会发生什么?
否,它们将设置为您在类构造函数中设置的值。在这种情况下,它将设置A和B的值等于类的每个实例,因为它完成了构造函数。