C# での new のいくつかの使用法の詳細な紹介

黄舟
リリース: 2017-03-17 13:05:41
オリジナル
1884 人が閲覧しました

この記事では主に C# での new の使用法をいくつか紹介します。エディターで見てみましょう

C# では、new キーワードは

演算子 や修飾子または制約として使用できます。

新しい演算子

は、

オブジェクトを作成し、コンストラクターを呼び出すために使用されます。

新しい修飾子

は、継承されたメンバーを基本クラスのメンバーから隠すために使用されます。

新しい制約

は、型パラメータとして使用できるパラメータの型を制約するためにジェネリック宣言で使用されます。

new 修飾子 (C# リファレンス)

new キーワードを修飾子として使用すると、基本クラスから継承されたメンバーを明示的に非表示にすることができます。継承されたメンバーを非表示にするということは、メンバーの派生バージョンが基本クラスのバージョンを置き換えることを意味します。 new 修飾子を使用せずにメンバーを非表示にすることは許可されていますが、警告が生成されます。 new を使用してメンバーを明示的に非表示にすると、この警告が抑制され、代わりに派生バージョンが使用されるという事実がログに記録されます。

継承されたメンバーを非表示にするには、派生クラスで同じ名前のメンバーを宣言し、 new 修飾子

new 演算子 (C# リファレンス)

1 を使用してオブジェクトを作成し、呼び出します。コンストラクタ。例:

Class1 o = new Class1();
ログイン後にコピー

2。値型のデフォルトのコンストラクターを呼び出すためにも使用されます

例: int myInt = new int();

MyInt は、デフォルトの 0 に初期化されます。 int型の値。このステートメントの効果は、 int myInt = 0;

3 と同等です。 new 演算子はオーバーロードできません。

4. 新しい演算子がメモリの割り当てに失敗した場合、OutOfMemoryException 例外がスローされます

新しい制約 (C# リファレンス)

新しい制約は、ジェネリック クラス宣言内の型パラメーターが次のように指定されている必要があることを指定しますパブリックのパラメーターなしのコンストラクターがあります。ジェネリック クラスがその型の新しいインスタンスを作成するとき、次の例に示すように、この制約を型パラメーターに適用します。

class ItemFactory<T> where T : new() 
{ 
public T GetNewItem() 
{ 
return new T(); 
} 
}
ログイン後にコピー

継承による名前の非表示は、次の形式のいずれかになります。

1. クラスに定数を導入します。または構造体、指定された

プロパティ

または型は、同じ名前を持つすべての基本クラスのメンバーを非表示にします。

2. クラスまたは構造体にメソッドを導入して、基本クラス内の同じ名前の属性、フィールド、型を非表示にします。また、同じシグネチャを持つすべての基本クラスのメソッドを非表示にします。

3. クラスまたは構造体に

indexer

を導入すると、同じ名前を持つすべての基本クラスのインデクサーが非表示になります。

4. 同じメンバーに対して new と override を同時に使用するのは間違いです。

注: 継承されたメンバーを非表示にしない宣言で new 修飾子を使用すると、警告が生成されます。

この例では、ネストされたクラス MyClass が、基本クラス内の同じ名前のクラスを非表示にします。この例では、完全修飾名を使用して非表示のクラス メンバーにアクセスする方法を示すだけでなく、新しい修飾子を使用して警告メッセージを抑制する方法も示します。

りー

以上がC# での new のいくつかの使用法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!