C#でメソッド呼び出しを行っているときに、呼び出しているメソッドのパラメーターの名前がコロンが追加されたインテリセンスリストに表示され、メソッドをフォーマットできることに気づき始めました。このように呼び出します:
MethodCall(parameter1:value1, parameter2:value2);
これは新しい言語機能ですか? SQLでストアドプロシージャを呼び出して、次のようにパラメーター名を指定する方法を思い出します。
spDoSomeStuff @param1 = 1, @param2 = 'other param'
これは同様の機能ですか?もしそうなら、何のために?そうでない場合、それは何であり、何に使用されますか?.
これは新機能です。ここを参照してください: http://msdn.Microsoft.com/en-us/library/dd264739.aspx 名前付きパラメーターは、たとえばObjectiveCの標準です。慣れるまでには少し時間がかかりますが、良いことです。見ているだけで、パラメータの意味がわかります。
名前付きパラメータを使用すると、シグネチャとは関係なく、カスタムの順序で引数の値を明示的に設定できます。メソッドシグネチャは、引数の型、つまりFoo(int i、bool b)によって定義されます。これは、int型とbool型の引数のみをこの順序で受け入れます。名前付き引数を使用すると、bを最初に、iを2番目に渡すことができます。
言及する価値があります。オプションのパラメーターとは異なり、特定の引数をスキップして、関心のあるパラメーターのみを渡すことができます。
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);
}
Scott Guはこの新機能を彼のブログで紹介しました:
C#4に付属しているのは 名前付きおよびオプションのパラメーター です。
@Krumelurは、「名前付きパラメーターは、たとえばObjectiveCでは標準です」と述べました。
それは実際には正しくありません。 Objective-Cは中置表記法を使用しているため、このメッセージは以下を呼び出します。
[foo setRed:255 Green:255 Blue:0];
それは setRed:Green:Blue: メッセージ(コロンを含む!)と(255,255,0)引数がメッセージ名の中に散在しています。
確かに、最初はObjective-Cの構文を赤くすると、Objective-Cが名前付きパラメーターを使用しているように見えます。しかし、それは実際には正しくなく、その違いを誤解していることがObjective-Cの学習の障害になる可能性があります。
(私はコメントで答えたでしょうが、私はどういうわけかすべての評判ポイントを失い、最初からやり直しています。Drat。C'est la vie。)