Подтвердить что ты не робот

Вызов метода С# с именем параметра и двоеточием

Я начал замечать, когда я делаю вызовы методов на С#, чтобы имена параметров для метода, который я вызываю, будут отображаться в списке intellisense, добавленном двоеточием, и что я могу тогда форматируйте вызов метода:

MethodCall(parameter1:value1, parameter2:value2);

Является ли это новой языковой функцией? Это напоминает мне, как вы можете вызвать хранимые процедуры в SQL и указать имена параметров так:

spDoSomeStuff @param1 = 1, @param2 = 'other param'

Это аналогичная функция? Если да, то в конце концов? Если нет, что это такое и для чего его нужно использовать.

4b9b3361

Ответ 1

Это новая функция. См. Здесь: http://msdn.microsoft.com/en-us/library/dd264739.aspx Именованные параметры являются стандартными в ObjectiveC, например. Потребуется некоторое время, чтобы привыкнуть к ним, но они хорошие. Только от просмотра вы можете указать, для чего предназначен параметр.

Ответ 2

Именованные параметры позволяют явно указывать значение аргументов в пользовательском порядке независимо от подписи. Сигнатуры метода определяются типами аргументов, то есть Foo (int i, bool b), которые будут принимать только аргументы типа int и bool в этом порядке. Именованные аргументы позволяют вам сначала передать b и я секунду.

Ответ 3

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

public void Example(int required, string StrVal = "default", int IntVal = 0)
{
    // ...
}

public void Test()
{
    // This gives compiler error
    // Example(1, 10);

    // This works
    Example(1, IntVal:10);
}

Ответ 6

@Krumelur сказал, что "Именованные параметры являются стандартными в ObjectiveC, например".

Это не совсем правильно. Objective-C использует нотацию infix, так что это сообщение вызывает:

[foo setRed:255 Green:255 Blue:0];

- это сообщение setRed: Green: Blue: (включая эти двоеточия!) с аргументами (255,255,0), перемежающимися внутри имени сообщения.

Хотя, предоставленный, сначала синим синим blush Objective-C дает внешний вид, что Objective-C использует именованные параметры. Но это на самом деле не правильно, и непонимание различий может быть препятствием для обучения Objective-C.

(Я бы ответил в комментарии, но я как-то потерял все свои очки репутации, и я начинаю больше. Drat. C'est la vie.)