第3章C#クラスとオブジェクト5. C#アクセサの取得と設定:フィールド(プロパティ)値の取得と設定

この記事は以下から転送されます:http : //m.biancheng.net/view/2809.html

属性はフィールドと組み合わせて使用​​されることが多く、それぞれフィールドの値を取得または設定するために使用されるgetおよびsetアクセサーを提供します。

getアクセサーとsetアクセサーの使用方法と方法は非常に似ています。フィールドを操作するときに、いくつかのルールと条件に従ってフィールドの値を設定または取得できます。

さらに、フィールドのセキュリティを確保するために、getアクセサーまたはsetアクセサーを省略することもできます。

属性を定義する構文は次のとおりです。

パブリック名データ型属性
{
    GET
    {
        ステートメントブロックのプロパティを取得する;
        戻り値;
    }
    SET
    {
        セットのプロパティは、文のブロックを結果;
    }
}

それらの中で:

1)取得する{}

属性の値を取得するには、getアクセサーを使用します。属性のデータ型と互換性のある値を返すには、getステートメントの最後にreturnキーワードを使用する必要があります。

属性定義でアクセサーが省略されている場合、プライベートタイプフィールドの値は他のクラスでは取得できないため、書き込み専用属性とも呼ばれます。

2)セット{}

setアクセサはフィールドの値を設定するために使用され、ここではフィールドに割り当てられた値である特別な値valueが使用されます。

setアクセサーを省略した後は、他のクラスのフィールドに値を割り当てることができないため、読み取り専用属性とも呼ばれます。

通常、属性名の名前はPascalの命名法です。単語の最初の文字は大文字になります。複数の単語で構成される場合は、各単語の最初の文字が大文字になります。

属性はフィールドに割り当てられるため、属性の名前は通常、フィールド内の各単語の最初の文字になります。たとえば、nameという名前のフィールドが定義され、属性名はNameです。

[例]書籍情報クラス(Book)を定義し、書籍番号(id)、書籍名(name)、書籍の価格(price)をクラスに3つのフィールドに定義し、これらの3つのフィールドに属性を設定します。名前は読み取り専用属性に設定されます。

タイトルの要件に応じて、コードは次のとおりです。

namespace code_1 
{ 
    class Book 
    { 
        private int id; 
        private string name; 
        private double price; 
        // Set book number attribute 
        public int Id 
        { 
            get 
            { 
                return id; 
            } 
            set 
            { 
                id = value; 
            } 
        } 
        // Set book name attribute 
        public string名前
        { 
            get 
            { 
                return name; 
            } 
        }  
        //ブック価格属性を設定する
        public double Price 
        { 
            get 
            { 
                return price; 
            } 
            セット
            { 
                価格=値; 
            } 
        } 
    } 
}

上記の例では、フィールドに値を割り当てる場合、値はフィールドに直接割り当てられます。フィールドに割り当てられる値を制限する場合は、最初に値が条件を満たすかどうかを判断し、条件を満たす場合は値を割り当て、それ以外の場合はデフォルトを割り当てることができます他の操作を評価または実行します。

上記の例で必要な書籍の価格が0より大きいと仮定すると、入力した値が条件を満たさない場合、書籍の価格は0に設定されます。改定簿価欄の属性コードは以下の通りです。

public double Price 
{ 
    get 
    { 
        return price; 
    } 
    set 
    { 
     if(value> = 0)
     { 
         price = value; 
     } 
     else 
     { 
         価格= 0; 
     } 
    } 
}

上記の例からわかるように、フィールド属性を定義するときの属性の役割は、フィールドのgetおよびsetアクセサーを提供することです。操作は似ているため 、属性の定義は、C#言語で  次のように簡略化できます。

公開データ型の属性名{get; set;}

この方法は、自動属性設定とも呼ばれます。簡易ブッククラスの属性設定のコードは以下の通りです。

public int Id {get; set;} 
public string Name {get; set;} 
public double Price {get; セットする;}

上記のメソッドを使用してプロパティを設定する場合、最初にフィールドを指定する必要はありません。自動属性を使用して属性を設定する場合は、読み取り専用属性を意味します。設定アクセサを直接省略できます。読み取り専用属性は次のように書くことができます。

public int Id {get;} = 1;

これは、Id属性の値を1に設定し、セミコロンで終了することと同じです。ただし、属性を自動的に生成する方法を使用する場合は、getアクセサーを省略できません。他のクラスが属性値にアクセスできないようにする場合は、getアクセサーの前にアクセス修飾子privateを追加できます。コードは次のとおりです。

public int Id {private get; セットする;}

このように、Id属性のgetアクセサーは、現在のクラスでのみ使用できます。

さらに、Visual Studio 2015が提供するインターフェイス操作メソッドを使用してフィールドのプロパティを生成することもできます。Bookクラスを開き、フィールドを選択してプロパティを生成してから、メニューバーで[編集]-[リファクタリング]-[パッケージフィールド]を選択します。 「以下に示すコマンド。

「フィールドのカプセル化」コマンドを選択します


「パッケージフィールド」コマンドを選択すると、以下のダイアログボックスが表示されます。

このダイアログボックスで、生成された属性のフィールドを変更する必要がある場合は、チェックボックスをオンまたはオフにして、生成された属性を確認し、[適用]ボタンをクリックしてフィールドをカプセル化する操作を完了できます。

変更のプレビュー-カプセル化フィールドダイアログ


ユーザーは設定したフィールドを右クリックすることもでき、以下に示すメニューがポップアップします。

右クリックメニュー


[クイック操作とリファクタリング]コマンドを選択し、[フィールドのパッケージ]ボタンをクリックして、フィールドのパッキング操作を完了します。

おすすめ

転載: www.cnblogs.com/hanguoshun/p/12729245.html