3

setters今日、VS がとを自動的に定義する方法を提供していることを知りましたgetters。明確にするために、単純なクラスがありStudentsます:

 class Students
    {
        private string name;
        private Int32 pin;
        private string addres;
        private int phone;
     ...

+を選択nameしてクリックすると、次のようになります。ctrlkxC#propg

   class Students
    {
        private string public int MyProperty { get; private set; }
        private Int32 pin;
        private string addres;
        private int phone;

このようなコードには明らかに問題があるため、最終的には次のようになります。

   class Students
    {
        private string name { get; private set; }
        private Int32 pin;
        private string addres;
        private int phone;

私の質問は、これはgettersandの VS 自動化を利用する正しい方法settersですか? の値を設定および取得するための正しい構文は何nameですか? このコードが正しければ、私が見つけたものではなく、 VS を使用して my gettersandを作成するよりエレガントな方法はありますか?setters

4

5 に答える 5

7

プライベート変数宣言の上にカーソルを置き、 , を押します ctrl-Rctrl-E

于 2012-08-14T15:05:02.527 に答える
4

いいえ、ちがいます。必要なのは、新しいプロパティではなく、フィールドから自動プロパティへのリファクタリングです。

于 2012-08-14T15:04:16.063 に答える
4

「prop」と入力して TAB を 2 回押すと、Visual Studio によって次が追加されます。

public TYPE Type { get; set; }

次に、「TYPE」と「Type」を変更します

public string Name { get; set; }

これは、Visual Studio でプロパティを作成するための最も簡単なショートカットです。

編集: また、Serg が述べたように、Refactor->Encapsulate Fieldメニュー オプションに移動して、フィールドをプロパティに変換できます。

于 2012-08-14T15:04:36.593 に答える
3

自動プロパティの背後にある考え方は、プライベート フィールドを完全に削除し、それらを自動プロパティ (非表示のバッキング フィールドを持つ) に置き換えることです。

コードスニペットもあります

prop (TAB TAB)

そうは言っても、get / setter を public にすることを検討する必要があります。通常の規則は、PascalCase のプロパティ名です。

class Students
{
    public string Name { get; set; }
    public Int32 Pin { get; set; }
    public string Address { get; set; }
    public int Phone { get; set; }
   ...

EDIT Servy のコメントによると、DTO のimmutable のようなデータ中心のクラスを作成する動きが高まっています。これにより、セッターが非公開になり、初期化コンストラクターおよび/またはクラス ファクトリ メソッドがクラスに提供されます。しかし、それは後で説明します:)

于 2012-08-14T15:04:59.313 に答える
2

結果の構文は正しいです...自動バッキングフィールドを持つプライベートゲッター/セッターが必要な場合。

Ctrl +r,eフィールドをプロパティにカプセル化します。つまり、フィールドpublicのゲッター/セッターを使用してプロパティを自動生成しますprivate。例:

基本クラスから始めます。

class Students
{
    private string name;
    private Int32 pin;
    private string addres;
    private int phone;

名前を選択してクリックctrl +r,eし、新しいプロパティに使用する名前を入力して (提案された「名前」を使用しました)、Enter キーを押します。次の出力が得られるはずです。

class Students
{
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private Int32 pin;
    private string addres;
    private int phone;
于 2012-08-14T15:15:02.500 に答える