2016-09-01 137 views
-2

我有一個簡單的類是這樣的:如何從一個類的多變量實例中獲取一個變量?

public class r_event 
{ 
    string name; 
    double time; 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 

,我已經在另一個班級做一個實例如下:

r_event event1 = new r_event("SH_S", 2); 

,但我想分配只是這兩個變量(事件之一,時間)我的第二類的局部變量;

事實上,我想在第二個類中聲明(例如)一個名爲「name」的字符串,並將r_event類實例的「name」屬性分配給名稱。 這樣的事情:

 string name = event1.name; 

但這是不可能的。我怎樣才能做這份工作?

+2

設置添加getter方法。 – OldProgrammer

+3

請看看[C#屬性](https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx) –

回答

0

您可以通過簡單地添加關鍵字public使您已經公開的字段。例如

public string name; 
public double time; 

這將允許您在課堂外訪問它們。 事實上,創建(公共)屬性比使用公共字段更好。您可以通過增加實現這個下面......

public string Name 
{ 
    get { return name: } 
    set { name = value; } 
} 

public double Time 
{ 
    get { return time; } 
    set { time = value; } 
} 

希望這有助於(我可能會建議你考慮性能和可訪問性/訪問修飾符)。

+0

我添加了「公共」關鍵字,但是當我構建一個實例如: r_event e =新的r_event(); 然後分配給如下字符串: string name = e.Name; 系統顯示此錯誤:字段初始值設定程序無法引用非靜態字段方法....在賦值!? –

+0

嘗試實現屬性而不是使用公共字段。 –

+0

我剛剛運行了你的代碼,並且使用了公共訪問修飾符它可以工作嗎?我注意到你說你做了'string name = e.Name;',除非你把字段的名字從'name'改成'Name'(注意大寫'n'),那麼這確實會給你一個錯誤。 –

0

嘗試public string name;,您的變量不能通過其保護級別訪問。

1

剛跑出你的代碼,請沒有在關於它們的可訪問未指定變量是private by default這個作品我只是測試它,如果你聲明變量的訪問爲public請閱讀C# MSDN Access Modifiers

public class r_event 
{ 
    public string name; 
    public double time; 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 

調用同樣的方式

r_event event1 = new r_event("SH_S", 2); 

如果您熟悉Auto-Property's你可以做同樣的這種方式

public class r_event 
{ 
    public string name { get; set; } 
    public double time { get; set; } 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 
相關問題