I've begun to notice at times when I'm making method calls in C# that the names of the parameters for the method I'm calling will show up in the intellisense list appended with a colon, and that I can then format the method call thusly:
MethodCall(parameter1:value1, parameter2:value2);
Is this a new language feature? It reminds me of the way you can call stored procedures in SQL and specify parameter names like so:
spDoSomeStuff @param1 = 1, @param2 = 'other param'
Is this a similar feature? If so, to what end? If not, what is it and what is it to be used for.
It is worth mentioning, unlike optional parameters, you can skip certain arguments and pass only the parameters you are interested in.
@Krumelur said that "Named parameters are standard in ObjectiveC for instance."
That's not actually correct. Objective-C uses an infix notation, so that this message call:
is the setRed:Green:Blue: message (including those colons!) with the (255,255,0) arguments interspersed within the message name.
Although, granted, at first blush Objective-C's syntax gives the appearance that Objective-C uses named parameters. But that is not actually correct, and misunderstanding the difference can be an impediment for learning Objective-C.
(I would have answered in a comment, but I somehow lost all my reputation points and I'm starting over. Drat. C'est la vie.)
Scott Gu has introduced this new feature in his blog:
Optional Parameters and Named Arguments in C# 4
Named parameters allow you explicitly set the value of arguments in a custom order independent of the signature. Method signatures are defined by the argument types, ie, Foo( int i, bool b ), which will only accept arguments of type int and bool in that order. Named arguments allow you to pass b first and i second.
It's the Named and Optional Parameters that came in with C# 4.
It's a new feature. See here: http://msdn.microsoft.com/en-us/library/dd264739.aspx Named parameters are standard in ObjectiveC for instance. It takes some time to get used to them but they are a good thing. Only from looking you can tell what a parameter is meant for.