2011-07-05 2 views
3

パラメータの1つがカスタムタイプの場合、デフォルトを設定するにはどうすればよいですか?C#4.0のオプションパラメータのデフォルト値を指定する

public class Vehicle 
{ 
    public string Make {set; get;} 
    public int Year {set; get;} 
} 

public class VehicleFactory 
{ 
    //For vehicle, I need to set default values of Make="BMW", Year=2011 
    public string FindStuffAboutVehicle(string customer, Vehicle vehicle) 
    { 
     //Do stuff 
    } 
} 

答えて

5

本当にできません。ただし、あなたが何かを意味するnullを必要としない場合は、あなたが使用することができますいくつかのケースでは

public string FindStuffAboutVehicle(string customer, Vehicle vehicle = null) 
{ 
    vehicle = vehicle ?? new Vehicle { Make = "BMW", Year = 2011 }; 
    // Proceed as before 
} 

これはいいですが、それはあなたが誤って、発信者が状況をキャッチしないという意味ではありませんはnullを渡します。

おそらく代わりにオーバーロードを使用してきれいになります:

public string FindStuffAboutVehicle(string customer, Vehicle vehicle) 
{ 
    ... 
} 

public string FindStuffAboutVehicle(string customer) 
{ 
    return FindStuffAboutVehicle(customer, 
           new Vehicle { Make = "BMW", Year = 2011 }); 
} 

またoptional parameters and their corner casesについてエリックリペットの記事を読む価値があります。

関連する問題