ホームページ  >  記事  >  バックエンド開発  >  C# の静的メソッドと非静的メソッドの違いの概要

C# の静的メソッドと非静的メソッドの違いの概要

黄舟
黄舟オリジナル
2017-09-06 13:49:231464ブラウズ

静的メソッドと非静的メソッドの違い:

1. 静的メソッドはクラスをインスタンス化せずに呼び出すことができますが、非静的メソッドは呼び出す前にインスタンス化する必要があります

2. 静的メソッドは静的メソッドにのみアクセスできます。すべての非静的メソッドにアクセスできます。

3. 静的メソッドはオーバーライドとしてマークできず、派生クラスは書き換えられませんが、アクセスできます。

4. 静的メンバーは使用時に初期化されます。初めて。非静的メンバーは、オブジェクト作成時のメモリ割り当てという点では連続的ですが、非静的メンバーはメモリ ストレージ内で離散的であるため、静的メソッドと非静的メソッド間の呼び出し速度の点では、静的メソッドの速度が異なります。非静的メソッドはインスタンス化してメモリを割り当てる必要があるのに対し、静的メソッドはその必要がないため、確実に増加します。ただし、速度の違いはごくわずかです

静的メソッドを使用する場合とインスタンス メソッドを使用する場合:

1. 1つのメソッド そのクラスのインスタンスオブジェクトとは関係がなく、newのインスタンスに依存しないので、staticにする必要があります

2. などのオブジェクト指向の概念が必要ない場合はstaticを使用します。動物 -> RUN を展開する可能性があるため キャットランとドッグランの場合、現時点では非静的メソッドを使用する必要があります

スレッドの安全性について:

静的変数がある場合、静的メソッドはインスタンスを 1 つだけ持ちます。高い同時実行性の場合、すべての同時実行は、そのメソッドを使用すると、静的変数の値が変更され、問題が発生します

もちろん、同時実行性の不安はメソッド自体とは関係ありませんが、共有リソースとは関係ありません。各スレッドが操作する特定の変数の値を変更できます。マルチスレッド (同時実行は実際にはマルチスレッドです)、操作すると、値が混乱し、問題が発生します

非静的メソッドを使用する理由

これは私が書いたメソッドで、元々は直接書かれています。他に静的メソッドがない理由は、インスタンス化したくないため、コードを 1 行節約でき、静的と非静的の違い==! ~~; もちろん、非静的メソッドを記述することも可能です。

理由

1. メソッドを繰り返し呼び出す必要があるため、静的メソッドを使用すると、毎回 new に行くとメモリのオーバーヘッドが発生します。新しい空間にデータを再初期化する必要はありません

3. このメソッドは new の内容に依存しません。より古典的な静的メソッドですが、DBHelp は基本的に静的メソッドです

以上がC# の静的メソッドと非静的メソッドの違いの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。