2012-02-06 74 views
1

我是C#的新手,正在處理類和理解它們。我的問題是我不瞭解如何創建Get以檢索專用變量_yournameSet以設置專用變量_yourname構造函數GetInfo

namespace WindowsFormsApplication1 
{ 
    class InputClass 
    { 
     private string _yourName; 
     public string _banner; 
     public virtual void GetInfo(); 
     public InputClass(String _banner) 
     { 
      _banner = "Enter your name"; 
     } 
    } 
} 

也許我使用了錯誤的功能GetInfo。但我也想知道,當我有GetInfo如果在()我應該寫_yourname在它。

+0

你看了這頁嗎? http://msdn.microsoft.com/en-us/library/wxh6fsc7.aspx – 2012-02-06 21:07:25

+2

在構造函數中使用'this._banner',否則你只是設置本地變量。 – SomeWritesReserved 2012-02-06 21:15:07

回答

1

在C#中有屬性,有其他語言的公共getter和setter方法的功能:

class InputClass 
     { 
     private string _yourName; 
     public string _banner; 

     public InputClass(String _banner) 
     { 
      this._banner = _banner;  
     } 

     public string YourName 
     { 
      get { return _yourName; } 
      set { _yourName = value; } 
     } 

    } 

但是你可以使用自動屬性,如果你想:

class InputClass 
    { 
     public InputClass(String _banner) 
     { 
      Banner = _banner;  
     } 

     public string YourName 
     { 
      get; set; 
     } 

     public string Banner 
     { 
      get; set; 
     } 

    } 
1

這聽起來像你正試圖提供訪問_yourName字段。如果是的話就用一個屬性

class InputClass { 

    public string YourName { 
    get { return _yourName; } 
    set { _yourName = value; } 
    } 

    ... 
} 

現在的InputClass消費者可以就好像它是一個只讀字段訪問它。

InputClass ic = ...; 
string yourName = ic.YourName; 
ic.YourName = "hello"; 

注:C#提供了簡單的屬性這樣它們只是爲了超過私有字段包裝的特殊語法。其命名爲自動實現屬性

class InputClass { 
    public string YourName { get; set; } 
} 
1

您可以覆蓋getter和使用getset關鍵字設置。例如:

class InputClass 
{ 
    private string _yourName; 
    private string _banner; 

    public YourName 
    { 
     get { return _yourName; } 
     set { _yourName = value; } 
    } 

    public Banner 
    { 
     get { return _banner; } 
     set { _banner = value; } 
    } 

    public InputClass(String banner) 
    { 
     _banner = banner; 
    } 
} 
0

1.)使用屬性而不是成員,你得到一個免費的accessor(get)和mutator(set)。

public string YourName { get; set; } 
    public string Banner { get; set; } 

2.)您可以利用默認的構造函數,並在飛行中聲明它。

 //the old way: 
     InputClass myClass = new InputClass(); 
     myClass.YourName = "Bob"; 
     myClass.Banner = "Test Banner"; 

     //on the fly: 
     InputClass myClass = new InputClass() 
     { 
      YourName = "Bob", 
      Banner = "Test Banner" 
     }