パラメータを含む括弧または単純な空のC#メソッドの作成を示す複数のチュートリアルを見てきました。括弧なしで記述されたC#メソッドも見ました。
public int Value {
get{ return _Value; }
set{ _Value = value; }
}
私はそのコードをテストしていませんが、これは許可されていますか?それは悪い形と見なされますか?
パラメータを含む括弧または単純な空のC#メソッドの作成を示す複数のチュートリアルを見てきました。括弧なしで記述されたC#メソッドも見ました。
public int Value {
get{ return _Value; }
set{ _Value = value; }
}
私はそのコードをテストしていませんが、これは許可されていますか?それは悪い形と見なされますか?
これはプロパティであり、メソッドではありません。メソッドを作成する場合は、()が必要です。
フィリップの答えのように、あなたのコード例は実際にはプロパティです。
しかし、おそらく多くの人が実際に見落としていること、つまりプロパティが 1 つまたは 2 つのメソッドを使用して実装されていることに気付きました。それらはコンパイラによって作成され、get および/または set ブロックのそれぞれの内容を含みます。
したがって、次のプロパティ:
public string Name {
get {
return "Fred";
}
}
より良い書き方です:
public string GetName() {
return "Fred";
}
メソッドを宣言または呼び出すときは、括弧が必須です。
他の人が言ったように、あなたがそこに示したのは、舞台裏で1つまたは2つのメソッド(「ゲッター」と「セッター」のそれぞれに1つ)として実装されているプロパティです。
ただし、括弧のないメソッド名が表示されることがあります。これらはメソッド グループと呼ばれ、デリゲート型のインスタンスを構築するために使用されます。
例えば:
public void Foo(string x)
{
...
}
...
Action<string> action = Foo;
以下Action<string>
は、1 つの文字列パラメーターと void 戻り値の型を持つ呼び出しを表すデリゲート型です。Foo
この割り当ては、呼び出されたときにメソッドを呼び出すデリゲート型のインスタンスを作成します。
action("Test");
Foo
「Test」の引数で呼び出します。
これはプロパティであり、メソッドではありません。メソッドには括弧が必要です。
不適切な形式はコンテキストによって異なります。プロパティを使用するかどうかを決定する際に考慮すべき設計上の考慮事項がいくつかあります。
MSDN の優れたリストは次のとおりです: http://msdn.microsoft.com/en-us/library/ms229006.aspx