2010-11-03 102 views
-1

我有一個問題。一些邏輯OOP概念

class A 
{ 
    static void m1() 
    { 
     int x=10; 
    } 
} 

class B 
{ 
    // if i want to access the variable x in b class how can i access it 

    A a = new A(); 
    // a. what should i write here to access x variable 
} 
+0

什麼是「所說的」?無效的C#,當然。 – jalf 2010-11-03 11:21:37

+0

我想知道如何訪問某些其他類或同一類中的某些公共方法變量 – NoviceToDotNet 2010-11-03 11:23:25

+0

或mehods變量scop僅限於方法,因此我們無法訪問它們...... – NoviceToDotNet 2010-11-03 11:24:04

回答

2

爲了訪問x你必須讓它在A字段:

class A 
{ 
    public int X; 
} 
class B 
{ 
    static void Main() 
    { 
     A a = new A(); 
     a.X = 17; 
    } 
} 

然而,它是一般不好的做法,從一類暴露的公共領域 - 這是更好地包裝在一個屬性字段封裝它:

class A 
{ 
    int _x; 
    public int X 
    { 
     get { return _x; } 
     set { _x = value; } 
    } 
} 

如果這個語法看起來很麻煩,你可以簡化一下。 C#有一個名爲自動實現的屬性特徵,其中,編譯器將生成上面的代碼爲你,如果你這樣做:

class A 
{ 
    public int X { get; set; } 
} 
+0

先生什麼是財產的默認類型,是私人還是公共? – NoviceToDotNet 2010-11-03 11:37:21

+0

默認情況下,一個班級的所有成員都是「私人」。 – 2010-11-03 13:26:32

1

它應該是屬性或公共變量。

+0

是屬性總是公開的,或者我們必須明確地聲明它們是公開的,並且默認情況下它們是私人的? – NoviceToDotNet 2010-11-03 16:45:39

+0

請閱讀此鏈接http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c – PradeepGB 2010-11-04 06:34:44

1
class Class1 
    { 
     public int x; 

     public void M1() 
     { 
      x = 10; 
     } 

    } 

class ClassB 
{ 

void Method() 
{ 
    Class1 a = new Class1(); 
    a.M1(); 
    a.x = 5; 
    //at this point the x will contain 5 
} 
} 

該exmaple使用實例變量,而不是靜態的。

要訪問靜態變量,你必須有一個靜態方法M1然後ClassB的訪問x變量usign類名不是對象名稱,例如:

Class1.x = 5; 

變量X1也必須聲明爲static如:public static x = 10;

1

首先,當問一個問題時,請花30秒時間試圖獲得它正確。你的代碼是無稽之談。

call在C#中不是有效的關鍵字。你的意思是class?或者是其他東西?其次,請求你通過拼寫檢查器運行文本是不合理的嗎?我們中的任何一個人都沒有得到報酬來回答你的問題,我們在我們自由的時間裏免費提供。所以,如果你想要的答案,使它容易爲我們理解和回答你的問題。不要懶惰,因爲那樣我們也會懶惰,而忽略你的問題。

現在,據我瞭解你的問題,你不能。 x是在函數內聲明的局部變量。這在其他地方是不可見的。

+0

好吧,先生,我很抱歉,我會做同樣的告訴你...謝謝你我們的回答 – NoviceToDotNet 2010-11-03 11:25:38