[解決済み】プライベート静的メソッドを使用する利点
2022-04-06 01:57:11
質問
インスタンスフィールドの使用を必要としない内部プライベートメソッドを持つクラスを作成する場合、通常はコードの重複を減らすために、そのメソッドを静的として宣言することにパフォーマンスやメモリの利点がありますか?
例
foreach (XmlElement element in xmlDoc.DocumentElement.SelectNodes("sample"))
{
string first = GetInnerXml(element, ".//first");
string second = GetInnerXml(element, ".//second");
string third = GetInnerXml(element, ".//third");
}
...
private static string GetInnerXml(XmlElement element, string nodeName)
{
return GetInnerXml(element, nodeName, null);
}
private static string GetInnerXml(XmlElement element, string nodeName, string defaultValue)
{
XmlNode node = element.SelectSingleNode(nodeName);
return node == null ? defaultValue : node.InnerXml;
}
GetInnerXml()メソッドをstaticで宣言するメリットはあるのでしょうか? 意見レスは無しでお願いします、意見はあります。
どのように解決するのですか?
からの FxCopルールページ をこの上で
<ブロッククオートメソッドを static とマークすると、コンパイラはこれらのメンバに対して非仮想的なコールサイトを生成します。非仮想呼び出しサイトを発行すると、呼び出しごとに現在のオブジェクト・ポインタが非NULLであることを確認する実行時チェックが行われなくなります。これにより、性能に敏感なコードでは、測定可能な性能向上が期待できます。場合によっては、現在のオブジェクトインスタンスにアクセスできないことが、正しさの問題になることもあります。
関連
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] C#では、public、private、protected、アクセス修飾子がないことの違いは何ですか?
-
[解決済み] クラス内の項目の並び順。フィールド、プロパティ、コンストラクター、メソッド
-
[解決済み] 既存の静的クラスに拡張メソッドを追加することはできますか?
-
[解決済み] なぜC#は静的メソッドにインターフェイスを実装できないのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み] 2つのリストを結合する
-
[解決済み] メソッドは静的化できるが、そうすべきなのか?