6

C# の場合、変数を書き出してからすべてのプロパティを書き出すのは嫌いです。すべての変数を選択し、右クリックしてすべてのプロパティを作成する方法はありませんか。

4

8 に答える 8

18

フィールド宣言を右クリックし、メニューの [リファクタリング] -> [フィールドのカプセル化] から移動します。

int n;

int n;

public int N
{
   get { return n; }
   set { n = value; }
}
于 2010-04-27T19:25:16.743 に答える
12

コード リファクタリング ツールをお探しですか? もしそうなら、ReSharper をチェックしてください。単純なフィールドに裏打ちされたプロパティを自動プロパティに、またはその逆に簡単に変換できます。

単純にフィールドに基づくカスタム プロパティを書きたくない場合は、たとえば次のようにauto-propertiesを使用できます。

public string MyProperty { get; set; } // generates an auto-property

これは次と同等です:

private string m_MyProperty;
public string MyProperty 
{ 
  get { return m_MyProperty; }
  set { m_MyProperty = value; }
}

セッターとゲッターのアクセシビリティを変えることもできます。

public string MyProperty { get; private set; }

自動プロパティを使用することを選択した場合は、基礎となるフィールドにアクセスできないことに注意してください。また、1 つの部分 (getter または setter のみ) の実装を提供することもできません。ただし、プロパティを仮想にすることはできます。

于 2010-04-27T19:23:31.643 に答える
12

C# 3.0 以降 (基本的に VisualStudio 2008) を使用している場合は、自動プロパティを使用できます。これはまさにあなたが求めているものではありませんが、(うまくいけば) うまくいくはずです。

書くのではなく:

private string m_Name;

public string Name
{
    get { return m_Name; }
    set { m_Name = value; }
}

あなたはただ書くことができます:

public string Name { get; set; }

これにより、クラスに適用できる「ばかげた」(つまり、取得または割り当てのロジックがない) プロパティが迅速に提供されます。後で取得と代入のロジックが必要になった場合は、戻って完全なプロパティ宣言構文を実行するだけで、呼び出しコードを変更する必要はありません。

唯一の実際の違いは、バッキング変数が生成され、コンパイル時にコードで使用できないため、プロパティを使用してクラス内の値を取得する必要があることです。

于 2010-04-27T19:24:24.047 に答える
4

参考までに、「prop」(引用符なし) と入力するだけで、VS に付属のスニペットの 1 つがトリガーされ、タブで移動するだけで、はるかに迅速なオプションになります。

于 2010-04-27T19:27:43.877 に答える
2

なぜあなたはやっていないのですか:

public int SomeProperty { get; set; }

また

public int SomeOtherProperty { get; private set; }

?

于 2010-04-27T19:23:30.573 に答える
0

ほとんどの場合、C# で自動実装プロパティを使用する必要があります。ただし、明示的なバッキング フィールドを持つ「古いスタイル」のプロパティが必要な場合は、Visual Studio コード スニペットを作成して、記述を容易にすることができます。このブログ投稿には、その一例があります。

于 2010-04-27T19:30:55.903 に答える