4

コンストラクターでプロパティに渡されるときに変数に名前を付ける「正しい」方法はありますか? 例 (c#):

public class MyClass
{
    private int index;

    public MyClass(int i)
    {
        index = i;
    }
}

2 つの変数が「同じ」である場合、一方をより簡潔に名前を付けるのが一般的ですか? 少なくとも一貫性を保ちたいのですが、これを行うための受け入れられた方法があるかどうかについては.

4

7 に答える 7

5
public MyClass(int index)
{
    this.index = index;
}

これは、少なくとも Java で行う一般的な方法であり、C# でも同じだと思います。より意味のあるi名前にし、プロパティと同じ名前を使用して同じものを指定します。

于 2013-06-02T14:58:27.613 に答える
1

リファクタリングでは、クラスのプライベート フィールドを camelCase に接頭辞 _ (この_index場合) を付けることをお勧めします。パラメータはアンダースコアなしのキャメルケースにすることをお勧めします。

コメントで述べたように、MSDN が推奨するプライベート フィールドの標準はありません。

于 2013-06-02T15:30:40.497 に答える
0

「目に見える」変数を読みやすくすることに集中する必要があると思います(この場合、それはコンストラクターのパラメーターです)。結局のところ、これはクラスのユーザーが入力するときに表示されるものです。

はい、そのようなジレンマを回避する正しい方法があります。それは、言語に確立された命名規則に従うことです。たとえば、C# では、プライベート フィールドはアンダースコアで始まるという規則があります。おそらくJavaに相当するものがあります。

そうは言っても、フィールドを参照するために明示的に使用することで、フィールドとローカル変数を区別することは間違いなく可能ですthis(命名のあいまいさがある場合に適した方法です)。

于 2013-06-02T15:05:26.623 に答える
0

C# 標準では、次のようにコードを記述します。

public class MyClass {
  public MyClass(int index) {
    Index = index;
  }
  public int Index {
    get { return _index; }
    private set { _idex = value; /* Perform other actions triggered by the set */ }
  }
  private int _index;
}

バッキング フィールドが必要ない場合、プロパティ (およびバッキング フィールド) は次のように簡略化できます。

public Index { get; private set; }
于 2013-06-02T16:04:52.590 に答える
0

それらに同じ名前を付けることができます。これを使用して、何をしているかを明確にします。

this.index = index;

区別する場合 (これはお勧めしません)、内部名ではなく、メソッドに渡されるパラメーター名について最も明確にすることをお勧めします。他のプログラマーがあなたのクラスを使用する場合、少なくともパラメーターの意味を知っています。したがって、区別したい場合:

public MyClass(int index)
{
  i = index;
}
于 2013-06-02T15:00:14.463 に答える
0

あなたが書いたように使用することができます

また

変数名が同じ場合、以下は別のオプションになる可能性があります

public class MyClass
{
    private int index;

    public MyClass(int index)
    {
        this.index = index;
    }
}
于 2013-06-02T14:58:39.193 に答える