2012-04-18 38 views
5

對象類型名稱假設此類型:獲取對象的實例名稱沒有在C#4.0

public class Car { } 

我創建的是一個實例:

Car myCar = new Car(); 

Target target = new Target(); 
target.Model = myCar; 

這是另一種類型:

public class Target { 

    public object Model { get; set; } 

    string GetName(){ 

    //Use Model and return myCar in this Example 
    } 

} 

正如我顯示在代碼中GetName方法必須使用一個對象類型(Model)和RET在此示例中是否使用了myCar的實例的名稱?你有什麼建議可以做到嗎?

更新 如何:

public class Car { 

    public string Title { get; set; } 

} 

我傳遞給目標:target.Model = Car.Title

而且GetName()方法返回Title

+0

變量名不製造和不應該在業務邏輯 – zerkms 2012-04-18 08:14:15

+0

任何意義所以,如果你改變的變量名,事情打破? – VVS 2012-04-18 08:15:08

+0

爲什麼'Model'只是一個對象,而不是一個'Car'(或它的一個子類)? – 2012-04-18 08:17:37

回答

3

不,這是不可能的。爲什麼?因爲myCar只是一個名稱爲您的Car實例裏面的您設置變量的範圍。保存到target.Model的是參考Car實例。因此,在您的示例代碼之後,myCartarget.Model都引用Car的相同實例,只是名稱不同。這些名稱本身對於程序的執行並不重要,它只是我們用來簡化實例的一個技巧。

+0

我更新問題你現在在想什麼? – Saeid 2012-04-18 08:20:59

+0

現在我真的不知道你想要達到什麼了...... – 2012-04-18 11:12:42

4

對象沒有名稱,除非它們明確地存儲名稱。 myCar是一個局部變量 - 對象本身(Car不知道,您指的是名稱myCar。爲了說明:

Car myCar = new Car(); 
Car car2 = myCar; 
Car car3 = myCar; 

現在,所有三個變量指相同Car

如果你想汽車擁有的名字,你可以做

public class Car 
{ 
    public string Name { get; set; } 
} 

,然後分配和閱讀你希望它有任何名稱。

+0

嗯,你總是可以返回的名單...只是開玩笑;-) +1。 – 2012-04-18 08:20:11

+0

我更新問題你現在在想什麼? – Saeid 2012-04-18 08:20:43

1

沒有「實例的名稱」這樣的事情。你所說的是關於對象的具體引用的名稱;可能會有許多對同一個對象的引用,全部使用不同的名稱。而且,鏈接代碼和數據(即依靠變量名稱)是一種不好的做法。

如果你想Car有一些名字,然後將其命名明確

public class Car { 
    public string Name { get; set; } 
} 

Car myCar = new Car { Name = "myCar" };