2013-08-21 166 views
2

我想訪問從一個類到另一個類的字符串。我已經使用了屬性方法如下 -如何從一個類的變量值到另一個類?

Myclass.cs 

public class MyClass 
{ 
    private string _user; 
    public string user 
    { get { return this._user; } set { this._user = value; } } 

} 

consumption.aspx.cs 

我在一個函數分配值用戶現在

MyClass m = new MyClass(); 
m.user = "abc" 

當我嘗試在我的這之後這個叫其他功能使用此值值已分配

RawDal.cs 

MyClass m = new MyClass(); 
string x = m.user; 

我得到空值...如何操作?

+4

你需要使用'm'的相同實例...或者你可以使'User'靜態。 –

+4

您正在創建兩個獨立的MyClass實例。如果你想持久使用''Singleton' – wudzik

+0

一旦你創建了MyClass的另一個實例,它將從頭開始初始化,因此你無法訪問以前在其他任何地方使用該類實例所做的任何事情。你有去會話(如asp.net)或Singleton如@wudzik所說 –

回答

4

您沒有使用相同的實例。嘗試

public class MyClass 
{ 
    private string _user; 
    public string user 
    { get { return this._user; } set { this._user = value; } } 

} 

public string YourFunction() 
{ 
    MyClass m = new MyClass(); 
    m.user = "abc" 
    return m.user; 

} 

如果你想返回一個字符串嘗試像

string x = YourFunction(); 
9

正如你所創建的MyClass兩個獨立的情況下,這將導致一些簡化類似的評論已經提到的東西:

int a; 
a = 3; 
int b; 
Console.WriteLine("a: " + b); //<-- here it should be obvious why b is not 3 

您可以通過3種方式解決此問題:

1)對第二個調用使用MyClass的相同實例,但在這種情況下,您需要處於相同範圍內或將實例傳遞到新範圍。

2)使屬性/靜態成員:

public class MyClass 
{ 
    public static string User { get; set; } //the "static" is the important keyword, I just used the alternative property declaration to keep it shorter 
} 

然後你就可以通過MyClass.User隨時隨地訪問相同User值。

3)使用單:

public class MyClass 
{ 
    private static MyClass instance = null; 
    public static MyClass Instance 
    { 
     get 
     { 
      if(instance == null) 
       instance = new MyClass(); 
      return instance; 
     } 
    } 

    public string User { get; set; } 
} 

然後你就可以通過MyClass.Instance.User訪問它。

有可能還有一些更多的解決方案,但這些是常見的解決方案。

+0

我會得到與'MyClass.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance.Instance .Instance.User'? –

+0

@ T.Todua不,因爲您無法通過實例訪問靜態屬性。因此'MyClass.Instance.Instance'已不能用'Member'編譯UserQuery.MyClass.Instance不能用實例引用訪問;使用類型名稱來限定它。 – ChrFin

相關問題