簡體   English   中英

類中的公共變量

[英]Public variable inside a class

關於公共變量如何在類中工作,我有點困惑。 我知道可以在不調用類的情況下訪問公共變量,而私有變量則不能。

如果您有多個同一個類的實例,並且每個實例都為公共變量賦予不同的值,那么我假設每個類實例都有自己唯一的變量版本,每個變量都有不同的值。

我的困惑是這個

如果在不調用類的新實例的情況下更改公共變量的值會發生什么?

如果沒有先調用類,那么該類的所有未來新實例是否都將該變量設置為您設置的任何值? 如果不是那么會發生什么?

我認為你以某種方式混淆了公共變量和靜態變量。 以下聲明:

可以在不調用類的情況下訪問公共變量

對於非靜態變量來說,完全是明顯錯誤的,可能是私有的還是公開的。

如果更改類實例的公共變量,它將更改該實例 ,對其他現有實例或將來的實例無任何影響。

另一方面,靜態變量確實可以在沒有類實例的情況下調用,並且更改它們具有“全局”效果,與類實例無關。

(如果您有任何特定的代碼,需要進一步的指導,請發布)

在像C#這樣的語言中,你無法做到這一點。
訪問類本身的任何(非靜態)變量而不是它的實例
會導致編譯器錯誤。

也許一些示例代碼會有所幫助; 私有變量無法訪問,所以我猜你的術語變得混亂了。 在下面的示例中,PublicStaticInt屬性聲明為static; 簡而言之,這意味着您的AppDomain中只有一個副本。 創建的每個ExampleClass實例都引用它的相同副本。 PublicInt屬性是一個實例屬性; 這意味着ExampleClass的每個實例都有自己的那段數據副本。

    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的值等於零,因為它是構造函數完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM