Атрибут ASP.NET MVC DefaultValue и необязательный аргумент C#

В чем разница между этой сигнатурой метода ASP.NET MVC2, которая использует атрибут DefaultValue:

public ActionResult DoStuff([DefaultValue(MyEnum.Alpha)] MyEnum enumToUse, bool printPage = false)
{
    //...
}

А эта подпись, которая вместо этого использует необязательный аргумент C# 4.0?

public ActionResult DoStuff(MyEnum enumToUse = MyEnum.Alpha, bool printPage = false)
{
    //...
}

Отличаются ли эти два утверждения каким-либо функциональным образом, или это просто вопрос предпочтения?


person Mass Dot Net    schedule 23.05.2011    source источник


Ответы (1)


То же самое, это вопрос личных предпочтений. Я бы использовал второй, так как это меньше нажатий клавиш. Также я думаю, что DefaultValueAttribute будет включать в себя некоторое вуду отражения, поэтому, если вы неравнодушны к производительности, вы можете предпочесть необязательные аргументы С# 4.0.

person Darin Dimitrov    schedule 23.05.2011