2013-08-16 26 views
-3

我在class1test中有一個按鈕單擊事件,我想將d_testNumber的值設置爲3.然後在類2test中,我希望能夠執行if測試,並且if d_testNumber顯示一個消息框。我的問題是,在類2test中d_testNumber始終爲0。有人能告訴我如何從類1test d_testNumber的值到類2test?從不同類中獲取公共int的值

這是1test類:類

public int d_testNumber = 0; 

方法1test:

void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e) 
{ 
    d_testNumber = 3; 
} 

這是類2檢驗:

public int d_testNumber; 

方法,類2檢驗:

public void HelloMessage(); 

if (d_testNumber == 3) 
{ 
     messagebox.show('test worked'); 
} 
+6

你應該讀一個基本的C#的書,它會幫助你很多才能開始編寫代碼。 –

+1

我正在閱讀一個現在只是試圖做一個簡單的應用程序 – user2292217

+4

爲什麼贊成新手?他表明他的工作是對的?爲什麼不把他放在正確的方向? –

回答

0

也許你想d_testNumber是靜態的,所以這兩個類可以很容易地訪問它?

在1test

public static int d_testNumber; 
//rest of code the same 

在2檢驗:

if (1test.d_testNumber == 3) 
{ 
    //code 
} 

(假設這兩個類都在同一個項目/命名空間,如果不是你可能需要一個參考/ using語句在頂部)

1

如果您想使用與第1類中定義的值相同的值,那麼您有3個選項

  1. 請在第一
  2. 的靜態變量,如果你不想讓靜態你需要的值傳遞給其他類
  3. 例1的

public static int d_testNumber = 0; 
if (Class1test.d_testNumber == 3) 
{ 
     //your code 
} 
1

使用聲明中的static

public static int d_testNumber = 0; 
3

如果它是一個公共實例屬性的類,像這樣:

public Class Alpha 
{ 
    public int DTestNumber ; 
} 

那麼其他類需要爲了檢查一個參考其他類的相應實例它。如何獲得參考取決於您和您的計劃的設計。這裏有一個例子:

public class Bravo 
{ 
    public void SomeMethod() 
    { 
    Alpha instance = GetAnInstanceOfAlpha() ; // might be passed as a parameter 
    if (instance.DTestNumber == 3) 
    { 
     messagebox.Show('test worked') ; 
    } 
    return ; 
    } 

如果它是一個公共靜態屬性的類,像這樣:

public Class Alpha 
{ 
    public static int DTestNumber ; 
} 

然後在其他類,你可以做這樣的事情:

public class Bravo 
{ 
    public void SomeMethod() 
    { 
    if (Alpha.DTestNumber == 3) 
    { 
     messagebox.Show('test worked') ; 
    } 
    return ; 
    } 

請注意,靜態成員是關於應用程序域和類的單例(注: s tatics是每類財產,而不是per-intance)。此外,如果您的應用程序是多線程的(幾乎可以肯定是Windows程序),對靜態成員所做的任何更改都會保證競爭條件,除非您努力通過可用的許多同步原語來串行化訪問(例如,lock聲明)。

Head First Labs產生一些優秀的自學的書籍。如果你是新來編程,巡航到Head First Labs,並得到他們Head First Programming: A learner's guide to programming using the Python language(是的,它不使用Python,但對於大多數語言,編程技巧是不相關的語言。

如果您已經知道一些關於編程,但新的C#,然後獲取得到的副本,Head First C#: A Learner's Guide to Real-World Programming with C#, XAML, and .NET。強烈推薦。

Head First Programming

Head First C#

+0

我完全同意你的答案,但是你的答案肯定不會理解你的意思。他/她看起來非常初學者。恕我直言,更好地指導他/她繼續教程,而不是推動超出他/她知識的事情。 –

+0

+1,現在這個答案看起來很全面。 –

1

您將不得不進一步指定。兩個類中都有一個d_testnumber字段,2test類將使用它自己的變量。

如果你有一個叫做2testObject某處的2檢驗對象,你可以這樣做:

void miEditCopay_Click(object sender, Telerik.Windows.RadRoutedEventArgs e) 
{ 
    2testObject.d_testNumber = 3; 
} 

又通2testObject到HelloMessage()方法