Предоставление значения по умолчанию для Необязательного параметра в C # 4.0 - PullRequest
3 голосов
/ 05 июля 2011

Как установить значение по умолчанию, если один из параметров имеет пользовательский тип?

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
   }
}

1 Ответ

5 голосов
/ 05 июля 2011

Вы не можете, правда.Однако, , если вам не нужно null, чтобы обозначать что-либо еще, вы можете использовать:

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

В некоторых случаях это хорошо, но это означает, что вы не будетепоймайте ситуацию, когда вызывающий случайно пропустит ноль.

Возможно, было бы лучше использовать вместо него перегрузку:

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

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

Стоит также прочитать сообщения Эрика Липперта о необязательные параметры и их угловые регистры .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...