2013-12-09 46 views
1

我有下面的類什麼是C#創建一個對象,將被重新使用

public class Car 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public bool Enabled {get;set;} 

    public Car() 
    { 
     this.Enabled = false; 
    } 
} 

在我的代碼,我可以創建對象像下面並設置一些屬性的最佳方法。

Car oCar = new Car(); 

oCar.Id = 1; 
oCar.Name = "FastCar"; 

我然後有像下面

public static Car MyCarTest() 
{ 
    //do some logic.... 
    Car oCar = new Car(); 
    oCar.Id = 1; 
    oCar.Name = "Very FastCar"; 
    oCar.Enabled = true; 
    return oCar; 
} 

如果我所說的相同的代碼如下,隨後功能的單獨的功能;

Car oCar = new Car(); 

oCar.Id = 1; 
oCar.Name = "FastCar"; 

oCar = MyCarTest(); 

在調用該函數在這一點上,將創造型轎車的一個新對象,並指定名稱爲「非常FastCar」且處於啓用狀態設置爲true;函數返回一個新的Car(),該Car()被分配給創建的初始Car對象。

  • 編輯*

我的問題是,什麼是創建一個對象,後面的代碼中設置一些屬性值,然後在適當的方式,你的條件檢查意味着,原來的對象和屬性已設置的值將被對象的新實例覆蓋,例如:

Car oCar = new Car(); 

oCar.Id = 1; 
oCar.Name = "FastCar"; 

Car oCar1 = new Car(); 
oCar.Id = 1; 
oCar.Name = "Very FastCar"; 
oCar.Enabled = true; 

oCar = oCar1 

這是首選的方式嗎?

+5

「它將函數對象賦值給創建的Car的初始對象」 - 我不太瞭解這部分。或者最後一段的全部內容 - 您能舉出一些例子來說明您的意思嗎? (描述散文中的代碼行爲總是很煩躁,如果英語不是您的第一語言,則更是如此)。 – millimoose

+0

我已將問題添加到該問題中。 – Tommassiov

+0

好吧,您可以將您的屬性設置爲構造器或對象初始值設定器 –

回答

2

在這個例子中,你實際上改變的最初創建汽車:

Car oCar = new Car(); 

oCar.Id = 1; 
oCar.Name = "FastCar"; 

,當你撥打:

oCar = MyCarTest(); 

使得獨創毫無意義。如果你想建立一個返回默認對象的方法,那麼就這樣做:

var oCar = MyCarTest(); 
1

您對MyCarTest呼叫確實覆蓋你oCar變量,如邁克爾指出。這就是說,你這裏有什麼

public static Car MyCarTest() 
{ 
    //do some logic.... 
    Car oCar = new Car(); 
    oCar.Id = 1; 
    oCar.Name = "Very FastCar"; 
    oCar.Enabled = true; 
    return oCar; 
} 

通常被稱爲 工廠功能。如果您需要一次又一次創建具有相同基本屬性的對象,這絕對是一種常用的方法。

+0

因此,如果我創建了Car類型的對象,請設置一些屬性值,然後調用您的函數以上;是否正確分配MyAlreadyCreatedCarObject = MyCarTest(); – Tommassiov

0

除了:

Car oCar = new Car(); 

oCar.Id = 1; 
oCar.Name = "FastCar"; 

你也可以這樣做:

Car oCar = new Car 
{ 
    Id = 1, 
    Name = "FastCar" 
}; 

無論一種方式或另一種是做事情的「正常」的方式是一個有爭議的問題。有些人可能偏好某種方式,但兩者都有效。

相關問題