2013-03-01 53 views
0

我有一個關於2個獨立類的實例如何知道每個類的問題。當引用一個對象時,它是否總是作爲參數傳遞

讓我們假設我有一個空的控制檯應用程序,我已經在2個獨立的命名空間中添加了2個類。

每個類的細節都不重要,所以請考慮我的控制檯應用程序中的這個非常簡單的代碼。現在

public static void Main(string[] args) 
{ 
    Namespace1.ClassName = c = new Namespace1.ClassName(); 
    Namespace2.ClassName2 = c2 = new Namespace2.ClassName2(); 
} 

,除非我通過一個實例來(例如)我ClassName2的構造函數,然後c2將有c EG

Namespace2.ClassName2 = c2 = new Namespace2.ClassName2(c); 

沒有知識是有c2有知識的任何其他方式c而不是c作爲參數傳遞或設置爲c2的屬性。

我假設沒有,但我已經錯了很多次,我只是在澄清後。我主要是在尋找一個簡單的答案或答案,但其他任何細節也是值得讚賞的。

回答

1

我認爲,除了構造函數的參數,你可以做到這一點的唯一方法是在ClassName2創建一個屬性或setter函數,比設置你創建c2例如

Namespace2.ClassName2 c2 = new Namespace2.ClassName2(); 
c2.SetC(c); 

後,從理論上講,你還可以使類ClassName靜態的,但它不是一個好主意

+0

我認爲這是事實,但是我已經錯了很多次這樣得到的保證是好的(我不與任何其他開發商這樣的學習是工作硬)。謝謝你,這太棒了 – Dave 2013-03-01 14:09:51

+0

@DaveRook歡迎你:) – VladL 2013-03-01 14:11:45

1

你可以使用一個public static屬性,因此,如果您的主要方法是在一個Namespace3.Program類,例如,你可以聲明爲:

// namespace3 
public class Program { 
    public static Namespace1.Classname c {get;set;} 

    public static void Main(string[] args) 
    { 
     Pragram.c = new Namespace1.ClassName(); 
     Namespace2.ClassName2 c2 = new namespace2.ClassName2(); 
    } 
} 

然後在ClassName2方法調用

namespace3.Program.c 
相關問題