簡體   English   中英

另一個類中的非靜態變量

[英]non-static variable in another class

如何在另一個類中使用非靜態變量? 這是我的問題:

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()//method gets called...
    {
        a++;
    }

    public class class2
    {
       // Here initializing class2 variable as class1 property value.
        int b=alpha;
    }
}

然后Visual Studio提出:需要一個對象引用....

我一定是非常愚蠢的,因為我在互聯網上看到了很多這樣的例子,但是我沒有把它弄好,所以如果有人幫助我,我會感激不盡。

您需要訪問該其他類的對象 - 換句話說'引用'(在您的示例中為class1)

var c1 = new class1();

然后你可以訪問它的成員

var alpha = c1.alpha;

根據您的項目,您可以在class2中實例化它或將其作為參數傳遞給class2構造函數。

你在這里做的可能適用於JAVA。

為了使用非靜態字段(事實上,使用非靜態的任何東西),您需要擁有要從中訪問非靜態成員的對象的實例。

在這種情況下,嵌套類class2需要引用其外部類。 這可以在構造函數中傳遞,也可以在方法調用中傳遞。

例如,以下是使其工作的一種方法:

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()
    {
        a++;
        class2 c2 = new class2(this);
        Console.WriteLine("{0}", c2.b);
    }
    public class class2
    {
        public int b;
        public class2(class1 outer) {
            b = outer.alpha;
        }
    }
}

在您的示例中,您需要實例化class1的實例以訪問class2中的變量。

它應該是這樣的

public class class1
{
    int a;
    public int alpha{ get { return a; } }
    public void Method1()//method gets called...
    {
        a++;
    }     
}

public class class2
{
   // Here initializing class2 variable as class1 property value.
    class1 obj = new class1();
    int b= obj.alpha;
}

暫無
暫無

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

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