2009-11-10 2 views
2

Есть ли способ иметь именованные аргументы, как в Perl/PythonПоддерживает ли C# 2.0-3.0 аргументы поддержки методов?

, например

object.method(arg1 => value1, arg2 => value2, arg3 => 0); 

в C# до C# 4.0?

+1

Есть ли C# 2.5? Было ли это 3,5? –

+0

@ C.Ross - вы имеете в виду C# 3.0? –

+0

.NET 3.5, C# 3.0 ..., его обычно называют «C# 3.5» –

ответ

14

Метод с именем аргументы - это функция C# 4.0. (Вы не можете иметь необязательные параметры метода в C# < 4.0)

4

Это невозможно сделать до C# 4.0.

Кстати, нет такой вещи, как C# 2.5.

0

Хотя не точное соответствие для именованных аргументов, в конструкторе C# 3.0 есть что-то похожее на «object initializers», которое позволяет вам определять значения для публичных свойств при использовании оператора new. Это позволяет делать такие вещи, как это:

Person p = new Person() 
{ 
    FirstName = "John", 
    LastName = "Doe", 
    Address = new Address() 
    { 
     Street = "1234 St.", 
     City = "Phoenix" 
    } 
}; 

Теперь для того, чтобы использовать это, Вы должны вызвать оператор new (поэтому он не будет работать для методов) и свойств, которые вы настраиваете необходимость иметь такой же доступ что они должны позволить вам сделать это:

Person p = new Person(); 

p.FirstName = "John"; 
p.LastName = "Doe"; 

Address a = new Address(); 
a.Street = "1234 St."; 
a.City = "Phoenix"; 

p.Address = a; 

Так что это не позволит вам обойти public get но protected set свойства (вы не можете сделать свойство инициализирован только с помощью этого метода). Это может сделать ваш код более читаемым, хотя и не в той степени, в которой могут быть названы аргументы.

Смежные вопросы