2012-03-15 58 views
0

我有類:爲什麼我的值不能保存在一個類型的實例之間?

public class pro { 
    private string url = string.Empty; 
    public string GetURL() { return url; } 
    public void SetURL(string value) { url = value; } 
} 

在這一行我得到的值:

string url = li1.Value; 

pro itm = new pro(); // I have create Proprtie so I'm calling that 

itm.SetURL(url); // here I'm setting value 

再後來:

pro itm = new pro(); //properties object I have created 

string url = itm.GetURL(); // I'm not getting value which I have set in first 

類。

我也創建了Proprties;我究竟做錯了什麼?

+0

我試圖理解問題主體(儘管它仍然有點不清楚) - 但我無法理解標題;你可以請嘗試重新報復嗎? – 2012-03-15 07:33:48

+0

你能告訴我們'親'類嗎? – Arion 2012-03-15 07:34:43

+0

您不使用相同的實例。你在第二課中創建一個新的'pro'實例。 – 2012-03-15 07:36:13

回答

3

每個類實例(即每個new pro())具有不同的實例值;例如,如果您有兩個不同的實例,那麼它們將不會共享URL。如果你想分享這個,你應該讓相同的pro實例可用於這兩個地方,通過傳遞pro左右。

順便說一句,GetURL()/SetURL()是不是地道的C# - 這將是更常見的有財產,即

public string Url {get;set;} 

,你會那麼作爲訪問:

YourType item = new YourType(); 
item.Url = "http://foo.com/bar/"; 
// ... 
string url = item.Url; 

來自評論,它聽起來像你說的static數據;我應該強調,使用static通常不是一個好主意,並且可能導致測試,多租戶,線程等方面的許多問題;但是:以下工作沒有任何實例:

public class Properties { 
    public static string Url {get;set;} 
} 
... 
Properties.Url = "http://foo.com/bar/"; 
... 
string url = Properties.Url; 

注:沒有實例的。

但是,只保留實例可用,並且使用針對該常用實例的實例屬性幾乎總是可取的。

3

可能是我理解你的問題:

的事情是,在第二創建pro類的實例。如果要獲取第一個類中設置的字符串值,則應該使用第一個pro對象。

如果這不是你的問題,請澄清。

0

如果您需要某些類應用程序屬性,您可以使用靜態類。

public static class pro 
{ 
    public static string Url {get; set;} 
} 

並使用它像pro.Url = "aa";

相關問題