C#の基本入門

C#の基本



1. 抽象クラスとは何ですか、また抽象クラスとインターフェイスの違いは何ですか

C# では、抽象クラスはインスタンス化できないクラスを指し、その目的は他の派生型によって継承および実装されることです。抽象クラスには抽象メソッド、仮想メソッド、非仮想メソッドを含めることができ、サブクラスは親クラスのすべての抽象メソッドを実装する必要があります。それ以外の場合は、サブクラスも抽象クラスとして宣言する必要があります。

対照的に、インターフェイスは、実装コードを含まず、メソッド、プロパティ、イベント、インデクサーなどのメンバーのシグネチャのみを含む特別な抽象クラスです。インターフェイスを実装するクラスは、これらのメンバーを実装する具体的なメソッド コードを提供する必要があります。クラスは複数のインターフェイスを実装できるため、インターフェイスで定義されているすべてのメンバーの実装コードを取得できます。

使用法に関しては、抽象クラスは共通性を念頭に置いて設計されており、実際のオブジェクトを所有していないためインスタンス化できません。このインターフェイスは動作にさらに注意を払い、さまざまなオブジェクトが共通の動作を行えるように一連のルールを定義します。これは、開発者がプロ​​グラミングするのに便利です。

2. ポリモーフィズムとは

ポリモーフィズムはオブジェクト指向プログラミングにおける重要な概念であり、同じメソッドまたは操作が異なるオブジェクトに対して異なる動作を生成する可能性があることを意味します。簡単に言うと、同じメソッドが異なるオブジェクトで呼び出される場合、パフォーマンスや結果は異なります。

ポリモーフィズムは継承とインターフェイス実装に基づく必要があります。C# では、実行時のポリモーフィズムは継承関係を通じて実現できます。つまり、派生クラス オブジェクトが基本クラスを通じて参照され、関数呼び出しが行われ、特定のオブジェクト型に応じて対応する関数実装を呼び出すことができます。 。

たとえば、仮想メンバー関数 Speak() を持つ基本クラス Animal と、Speak() 関数をオーバーライドする 2 つの派生クラス Dog と Cat があるとします。Main() で、Animal 型変数animal を定義できます。をクリックして、具体的な Dog または Cat オブジェクトをポイントします。このように、animalのSpeak()関数を呼び出した場合、実際に呼び出されるのは特定のオブジェクトのSpeak()関数となり、動作が異なります。

さらに、C# はインターフェイスを通じてコン​​パイル時のポリモーフィズムも実装します。つまり、異なるクラスが同じインターフェイスを実装することで、同じインターフェイスによって定義されたメソッドを使用できるため、インターフェイスの関連操作を通じてポリモーフィックな動作を実現できます。

3. データベースインデックスについて簡単に知っていますか?

データベース インデックスは、データベース テーブル内のデータの検索と操作を高速化するために使用されるデータ構造であり、辞書のインデックスと比較することができ、必要な情報をより簡単に見つけることができます。

データベースのインデックスは通常、特定の列または列の組み合わせに従ってバイナリ ツリーや B+ ツリーなどのデータ構造を構築し、これらのデータ構造によりデータの高速な位置決めが可能になります。このテーブル内のデータをクエリするとき、インデックスが使用されている場合、データベースはテーブル全体を行ごとにスキャンするのではなく、最初にインデックスを使用して条件を満たすレコードを検索するため、クエリの効率が大幅に向上します。

クエリに加えて、データベース インデックスによって INSERT、UPDATE、DELETE 操作も高速化できます。これらの操作はテーブル内のインデックスに影響を与えるため、データベースは関連する操作を実行するときに対応するインデックス構造も維持する必要があります。

もちろん、インデックスは多ければ多いほど良いのです。各インデックスはストレージ領域を占有する必要があり、テーブルを変更するときは、関連するすべてのインデックスを更新する必要があるため、インデックスが多すぎると、INSERT、UPDATE、および DELETE のパフォーマンスに影響を及ぼします。コンピュータリソースを浪費し、データベースが複雑になります。したがって、インデックスを設計および使用するときは、悪用を避けるために慎重な考慮が必要です。

4. array と arraylist の長所と短所、およびそれらの違い

配列(配列):

利点:すべての要素が同じ型であるため、アクセス速度が速く、メモリ使用率が高くなります。
短所:サイズは変更できず、長さは事前に決定する必要があり、連続したメモリ ビットに直接格納され、挿入および削除操作は非効率的です。

配列リスト (ArrayList):

利点:長さはいつでも増減でき、追加や削除など、柔軟性に優れた便利なメソッドが多数提供されています。
欠点:要素の型が異なる可能性があるため、メモリ消費量が比較的多くなります。そのため、各要素には追加の型ポインタとガベージ コレクション マーカーが必要です。
2 つの主な違いは、Array は固定サイズであり、一度宣言すると変更できないのに対し、ArrayList は動的にサイズを変更できることです。同時に、Array は同じ種類のデータのみを保存できますが、ArrayList は異なる種類のデータを保存できます。さらに、異なる保存方法によって制限されるため、さまざまな操作における 2 つの操作の効率も異なります。

同じ種類のデータのみを保存する必要があり、長さが固定されており、最高のパフォーマンスが必要な場合には、配列を使用する方が適切です。長さが不確実な場合や、異なる種類のデータを保存する必要がある場合には、配列を使用する方が適しています。保存されている場合は、ArrayList を使用する方が柔軟で便利です。

ボックス化とボックス化解除の問題により、ArrayList は効率が低いことに注意してください。したがって、.NET Framework 2.0 以降、Microsoft は、元の非ジェネリック コレクション クラスを置き換えるために、List、Dictionary<TKey, TValue> などのジェネリック コレクションをリリースしました。これらのジェネリック コレクションは、より優れたパフォーマンスと型安全性を提供します。

トップに戻る


おすすめ

転載: blog.csdn.net/weixin_47410172/article/details/130579278