、staticキーワード
今私は(住宅ローンの金利は上がるどのくらいの計算に使用)上がる住宅ローン金利のクラスを設計し。
1 パブリック クラスInterestRateGoUp 2 { 3。 公的InterestRateGoUp() 4。 { 5。 率= 4.9メートル; 6 } 7。 8。 /// <まとめ> 9。 /// ベンチマークレート 10 /// </要約> 11。 公衆 小数点レート{ GET。SET ;} 12は 13である /// <まとめ> 14 /// 算出フロート 15 /// </要約> 16 /// ます。<param name = "率"> 現在のローンの利率</ param>の 17。 /// <戻り値> 変動金利の結果を返します。</戻り値> 18である 公共 進 CalculatorGoUp(小数レート) 19。 { 20は 小数結果=(レート-レート)/ 料金変更、 21である リターン結果、 22である } 23である } 24 パブリック クラスRealizeObject 25 { 26である パブリックリアライズ() 27 { 28の // 小さな黒い購入率6.37 29 InterestRateGoUpのRATE1 =新しい新しいInterestRateGoUp(); 30 フロート結果1 rate1.CalculatorGoUp =(6.37メートル)、 31は // 小豆空6.125購入 32 InterestRateGoUpのにrate2 = 新しい新しいInterestRateGoUpを(); 33である フロート(結果2 = rate2.CalculatorGoUp 6.125メートル)、 34は // 抵当参照速度はベンチマークすべてのオブジェクトが速度を変更する必要があり、5.88となる 35 rate1.Rate = 5.88メートル、 36 rate2.Rate = 5.88メートル; 37 // 百に変更しなければならないようなオブジェクトの数百または数千がある場合千 38 } 39 }
問題は、このプロパティは、基準金利の住宅ローンの金利は、住宅ローンの金利は、すべてのオブジェクトが基準金利をしてい上がるのではなく、すべてのオブジェクトの共有属性を上がるで、上記の例です。だから、staticキーワードを使用する共有の必要性に基準金利にこのプロパティを入れて、Second Editionの住宅ローンの金利はカテゴリーを上がります。
1つの パブリック クラスInterestRateGoUp 2 { 3 パブリックInterestRateGoUp() 4 { 5 率= 4.9メートル。 6 } 7 8 /// <要約> 9 /// 基准利率 10 /// </要約> 11 公共 静的 小数レート{ 得ます。セット; } 12 } 13 パブリック クラスRealizeObject 14 { 15 公衆リアライズ() 16 { 17 // 住宅ローンの基準速度は5.88となり、唯一以下の静的プロパティ使用して、(すべてのオブジェクトは、それを使用している)静的プロパティを変更する必要が 18である InterestRateGoUp.Rate = 5.88メートル; 19 // 使用コンストラクタの初期化静的プロパティが存在し問題は、ベンチマーク金利が4.9に変更されるように、オブジェクトを作成するたびに、静的プロパティを初期化することである 20 InterestRateGoUpのrate3 = 新しい新しいInterestRateGoUp(); 21 } 22 }
静的プロパティ(パッケージプライベート静的フィールドを大切に静的プロパティ)への静的自動初期化属性2、最初の自動静的プロパティ、第二は、静的コンストラクタの使用で、クラス第三版の住宅ローン金利は上がります:
1 パブリック クラスInterestRateGoUp 2 { 3。 /// <まとめ> 4。 /// 方法:静的プロパティではなく、静的自動プロパティ 5 /// </要約> 6 プライベート 静的 小数率= 4.9メートル; 7 パブリック 静的 小数レート 8 { 9 GET { 戻りレート;} 10 SET {率= 値;} 11 } 12は 13である /// <まとめ> 14 /// 方法2:静的コンストラクタ 15 /// </要約> 16 静的InterestRateGoUp() 17 { 18 率= 4.9メートル。 19 } 20 }
算出した浮動CalculatorGoUp方法がよく使用されている場合は、静的に設定CalculatorGoUpでき、クラス全体がユーザーのための特別なクラスのツールであれば住宅ローンの金利が上がる、あなたはすべてのクラスを置くことができますし、クラスメンバーは静的に設定されています。住宅ローン金利の最終版は、カテゴリを上がります。
1 パブリック 静的 クラスInterestRateGoUp 2 { 3。 静的InterestRateGoUp() 4。 { 5。 率= 4.9メートル; 6 } 7。 8。 /// <まとめ> 9。 /// ベンチマークレート 10 /// </要約> 11。 パブリック 静的 小数点率{ GET、SET ;} 12は、 13である /// <まとめ> 14 /// 算出フロート 15 /// </要約> 16 /// <PARAM NAME = "レート"> 現在のローンの利率</ param>の 17 /// <戻り値> 変動金利の結果を返す</戻り値> 18である 公共 の静的 進 CalculatorGoUp(小数レート) 。19 { 20は 小数 =(レート結果-レート)/ 速度、 21は リターン結果、 22である } 23である } 24 パブリック クラスRealizeObject 25 { 26である パブリックリアライズ() 27 { 28の // 小さな黒い購入率6.37 29 フロート結果1 InterestRateGoUp.CalculatorGoUp =(6.37メートル); 30の // 小豆はレート6.125購入 31は、 フロート結果2 = InterestRateGoUp.CalculatorGoUp(6.125メートル); 32 // 住宅ローンの基準速度は5.88となる 33れる InterestRateGoUp.Rate = 5.88メートル、 34れる // 購入料金ジル5.88 35 フロート InterestRateGoUp.CalculatorGoUp =(result3 5.88メートル); 36 } 37 }
要約:
1、静的キーワードは、クラスおよびタイプのメンバー(フィールド、プロパティ、メソッド、コンストラクタ、など)に変更してもよいです。
一度だけ一度だけ割り当てられたメモリが回収されたコンテンツを作成して修正2、staticキーワードは、プログラムの最後まで(パフォーマンスGCを取ることはありません)。静的キーワード修飾型部材上の目標レベルではなく、クラスレベル(それが唯一である)、それが唯一の静的メンバを使用するものである(クラス名。静的メンバー)としない(オブジェクト名。静的メンバー)によるものです静的クラスは、新しいを使用してオブジェクトを作成することはできません。
3、フィールド/プロパティの例は、各オブジェクトの排他的であり、各オブジェクトは、データの各インスタンスに割り当てられた固有のメモリ空間、および静的フィールド/プロパティになり、関係なく作成されたオブジェクトの数、すべてのオブジェクトによって共有されなかっ一度だけの静的データが割り当てられ、 。静的メソッドは、多くの場合、メモリの割り当てとクリーンアップの数を減らすことができる状況下での使用に適しています。インスタンスは、クラス/インスタンスの属性およびメソッドのみ(オブジェクト名.XXX)方法を使用して、静的な方法で直接使用することができないフィールド。排他的に静的コンストラクタのために、それは(例えば、データベースの読み出しなど)静的データのコンパイル時の初期値で未知のに適している静的データを初期化します。クラス全体の静的クラスのツールは、頻繁に使用するとしても知られ、あなたは新しいを作成するために使用することはできません、と静的な型のメンバーと変更のみ含めることができます。
備考:
図1は、静的コンストラクタない静的コンストラクタパラメータを定義することができ、アクセス修飾子を許可しません。
2、どんなにオブジェクトの多くの種類が一度だけ実行される静的コンストラクタを作成する方法。
図3は、静的メンバにアクセスする前に、初めてのクラスのランタイムインスタンスまたは発信者を作成し、実行時には、静的コンストラクタを呼び出します。
4、非静的コンストラクタの前に静的コンストラクタを実行します。
C#で堪能第6版での参照の一部