[解決済み] メソッドシグネチャに新しいキーワードを追加
2022-09-18 17:04:36
質問
リファクタリングを行っているうちに、以下の例のようなメソッドを作ってしまいました。簡単のためにデータ型は変えてあります。
以前はこのような代入文がありました。
MyObject myVar = new MyObject();
偶然にもこれにリファクタリングされました。
private static new MyObject CreateSomething()
{
return new MyObject{"Something New"};
}
これは私のカット&ペーストのミスによるものですが、このように
new
のキーワードを
private static new
は有効であり、コンパイルされます。
質問
: は何を意味しているのでしょうか?
new
キーワードはメソッド署名の中で何を意味するのでしょうか?C# 3.0 で導入されたものだと思うのですが?
とはどのように違うのでしょうか?
override
?
どのように解決するのですか?
MSDN から新しいキーワードのリファレンスを取得しました。
以下は、私がネット上で見つけた、Microsoft MVPによる、理にかなった例です。 オリジナルへのリンク
public class A
{
public virtual void One();
public void Two();
}
public class B : A
{
public override void One();
public new void Two();
}
B b = new B();
A a = b as A;
a.One(); // Calls implementation in B
a.Two(); // Calls implementation in A
b.One(); // Calls implementation in B
b.Two(); // Calls implementation in B
Overrideは非常に特殊なケースでのみ使用できます。 MSDNより。
非仮想または静的メソッドをオーバーライドすることはできません。 静的メソッドをオーバーライドすることはできません。オーバーライドされるベース メソッドは、virtual、abstract、または をオーバーライドする必要があります。
つまり、非仮想および静的なメソッドを「オーバーライド」できるようにするために「new」キーワードが必要なのです。
関連
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] C#で同期メソッドから非同期メソッドを呼び出すには?
-
[解決済み] C#でメソッドをパラメータとして渡す
-
[解決済み] volatileキーワードは何に役立つのでしょうか?
-
[解決済み] Java の native キーワードは何のためにあるのですか?
-
[解決済み] PHPのキーワード'var'は何をするのですか?
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】C#のyieldキーワードは何に使われるのか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み] 2つのリストを結合する