コレクションは OOP の重要な概念であり、C# でのコレクションの包括的なサポートは言語の本質の 1 つです。
ジェネリック コレクションを使用する理由は何ですか?
C# 2.0 より前には、コレクションを実装する主な方法が 2 つありました。
a. ArrayList
を使用してオブジェクトを ArrayList に直接配置します。ただし、コレクション内の項目は Object 型であるため、面倒な型変換を実行するたびに使用されます。
b. カスタム コレクション クラスを使用する
一般的なアプローチは、CollectionBase 抽象クラスからカスタム クラスを継承し、IList オブジェクトをカプセル化することで厳密に型指定されたコレクションを実装することです。この方法では、コレクション型ごとに対応するカスタム クラスを作成する必要があり、大きなワークロードが必要になります。ジェネリック コレクションの登場により、上記の問題は 1 行のコードだけで、指定された型のコレクションを作成できるようになりました。
ジェネリック医薬品とは何ですか?
ジェネリックは C# 2.0 の新しい要素 (C++ ではテンプレートと呼ばれます) であり、主に一連の同様の問題を解決するために使用されます。このメカニズムにより、クラス名をパラメーターとしてジェネリック型に渡し、対応するオブジェクトを生成することができます。ジェネリックス (クラス、インターフェイス、メソッド、デリゲートなどを含む) をテンプレートと考えると、テンプレート内のバリアント部分がパラメーターとして渡されたクラス名に置き換えられ、それによって新しい型定義が取得されます。ジェネリックは比較的大きなトピックなので、ここでは詳しく分析しません。興味がある方は関連情報を参照してください。
汎用コレクションを作成するにはどうすればよいですか?
コレクションを作成するには、主に System.Collections.Generic 名前空間の List
次のように Person クラスを定義します。
ご覧のとおり、ジェネリック コレクションは、コレクションの実装コードを使用すると、指定した型のコレクションを簡単に作成できます。それだけでなく、汎用コレクションはさらに強力な機能も提供します。並べ替えと検索を見てみましょう。
List
「T」は使用する型で、string、int、またはユーザー定義型などの単純な型を指定できます。以下に具体的な例を見てみましょう。
class person
{
public person(string Name, int Age) )
this._name= 名前;
this._age = 年齢;
}
//Name
public string Name
{
get { return _name }
}
//年齢
public int Age
{g Get {Return_age;}}}} // 人物オブジェクトを作成します
人物 P1 = 新しい人物 ("Zhang San", 30);
人物 P2 = 新しい人物 ( "李思", 20);
person p3 = new person("王五", 50);
//タイプ person のオブジェクトのコレクションを作成します
List
// Person オブジェクトをコレクションに入れます
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
//2 番目の人物の名前を出力します
Console.Write(persons[1].Name);
一般的なコレクションの並べ替え
並べ替えは比較に基づいて行われます。たとえば、2 つの数値 1 と 2 があります。これらを並べ替えるには、まず 2 つの数値を比較し、比較結果に基づいて並べ替える必要があります。オブジェクトを比較する場合、状況は少し複雑になります。たとえば、人物オブジェクトを比較する場合は、名前または年齢で比較できますが、これには比較ルールを決定する必要があります。オブジェクトには複数の比較ルールを含めることができますが、オブジェクトを定義するクラスに配置されるデフォルト ルールは 1 つだけです。デフォルトの比較ルールは、IComparable
}
CompareTo メソッドのパラメータは比較対象となる同じ型の別のオブジェクトであり、戻り値は int 型です。戻り値が 0 より大きい場合は、最初のオブジェクトが 2 番目のオブジェクトより大きいことを意味します。戻り値が 0 より小さい場合は、1 番目のオブジェクトが 2 番目のオブジェクトより小さいことを意味します。等しい。
デフォルトの比較ルールを定義した後、以下に示すように、パラメータを指定せずに Sort メソッドを使用してコレクションを並べ替えることができます:
// デフォルトのルールに従ってコレクションを並べ替えます
persons.Sort();
//すべての人物の名前を出力します
foreach (人名p)
{
Console.WriteLine(p.Name) //出力順は「李思」、「张三」、「王」です。五"
}
実際の使用では、多くの異なるルールに従ってコレクションを並べ替える必要があることがよくあります。これには、Compare メソッドで定義できる他の比較ルールを定義する必要があります。このメソッドは IComparer
class NameComparer: IComparer
{
//ストレージ ソーター インスタンス
public static NameComparer Default = new NameComparer();
//名前で比較
public int Compare (人物 p1、人物 p2)
. Name); の場合、戻り値は int 型であり、戻り値の処理規則はCompareTo メソッド。その中の Comparer.Default は、同じ型の 2 つのオブジェクトを比較するための組み込みの Comparer オブジェクトを返します。
次に、新しく定義したコンパレータを使用してコレクションを並べ替えます。
委任によってコレクションを並べ替えることもできます。まず、比較ルールを保存するために委任が呼び出すメソッドを定義する必要があります。以下のコードを見てください: 次に、組み込みの汎用デリゲート System.Comparison
ご覧のとおり、後の 2 つのメソッドは指定されたルールに従ってコレクションを並べ替えることができますが、作成者はこの方法を好みます。デリゲーション方式では、さまざまな比較ルールをクラスに入れて柔軟に呼び出すことが考えられます。
//コレクションを名前で並べ替えます
persons.Sort(NameComparer.Default);
//全員の名前を出力します
foreach (person p in people)
{
Console.WriteLine(p.Name ;
) { return System.Collections.Comparer.Default.Compare(p1.Name, p2.Name); 型、戻り値の処理規則は CompareTo メソッドと同じです。 System.Comparison{ Console.WriteLine(p.Name); //出力順序は "Li Si"、"Wang Wu"、"Zhang San" です} ご覧のとおり、後者の 2 つのメソッドは次の目的で使用できます。 「ソートのルールを指定する」に従ってコレクションを設定しますが、作成者は委任を使用することを好みます。さまざまな比較ルールをクラスに入れて、それらを柔軟に呼び出すことを検討できます。 一般的なコレクションの検索 検索とは、コレクションから特定の条件を満たすアイテムを検索することです。複数の検索条件を定義し、必要に応じて呼び出すことができます。まず、検索条件を次のように定義します。 class PersonPredicate{ //中年(40歳以上)を探す public static bool MidAge(person p) {
if (p. 年齢 > 特定を満たす 条件の項目は true を返し、それ以外の場合は false を返します。 System.Predicate
foreach (person p in MidAgepersons){ Console.WriteLine(p.Name); //Output "王五"} 次に、組み込みの汎用デリゲート System.Predicate
単一のクラスが提供できる機能には制限があることを考慮すると、List
// Persons コレクション クラスを定義します
class Persons: List
{
// コレクション内のすべての人の名前を取得します
public string GetAllNames( )
{
this.Count == 0)
;
}
return val.Substring( 0、val.Length - 1);
}
}
// Persons コレクションを作成してデータを設定します
Persons PersonCol = new Persons();
PersonCol.Add(p1);
PersonCol.Add(p2);
PersonCol.Add(p3);
//Output全員の名前
Console.Write(PersonCol.GetAllNames()); //出力「Zhang San, Li Si, Wang Wu 」
List メソッドまたは属性関数のメソッドと属性
Capacity は数値を取得または設定するために使用されますリストが収容できる要素の数。数量が容量を超えると、この値は自動的に増加します。この値を設定して容量を減らすか、trin() メソッドを呼び出して実際の要素数に合わせて容量を減らすことができます。
Count プロパティ。配列内の現在の要素数を取得するために使用されます。
Item() インデックスを指定して要素を取得または設定します。 List クラスの場合、これはインデクサーです。
Add( ) List にオブジェクトを追加するパブリック メソッド
AddRange( ) List の最後に ICollection インターフェイスを実装する複数の要素を追加するパブリック メソッド
BinarySearch( ) 並べ替えに使用されるオーバーロードされたパブリック メソッド バイナリを使用リスト内の指定された要素を検索します。
Clear( ) リストからすべての要素を削除します。
Contains( ) 要素がリスト内にあるかどうかをテストします。
CopyTo( ) オーバーロードされたパブリック メソッド、リストを 1 つにコピーします。 -次元配列
Exists()は、要素がList内にあるかどうかをテストします
Find()は、List内に表示される最初に一致する要素を検索して返します
FindAll()は、List内で一致するすべての要素を検索して返します
GetEnumerator () オーバーロードされたパブリック メソッド、反復のための列挙子を返します List
Getrange() 指定された範囲内の要素を新しい List
IndexOf() オーバーロードされたパブリック メソッド、それぞれを検索して返します 一致する要素のインデックス
Insert () List に要素を挿入します
InsertRange() List に要素のセットを挿入します
LastIndexOf() オーバーロードされた public メソッドで、最後に一致した要素のインデックスを検索して返します
Remove() は最初に一致した要素を削除します指定された要素と一致します
RemoveAt( ) 指定されたインデックスにある要素を削除します
RemoveRange( ) 指定された範囲内の要素を削除します
Reverse( ) リスト内の要素の順序を逆にします
Sort() 要素を並べ替えますList 内の要素
ToArray() List 内の要素を新しい配列にコピーします
trimToSize() List 内の実際の要素数に容量を設定します
概要:
この記事では、Yu の使用法を紹介することに焦点を当てます。 C# 2.0 のジェネリックを使用してコレクションを実装し、コレクション関数を拡張すると、多くの反復作業が軽減され、開発効率が大幅に向上します。実際、コレクションはジェネリックの典型的なアプリケーションにすぎません。ジェネリックについて詳しく知りたい場合は、他の関連情報を確認してください。この記事がお役に立てば幸いです
C# リストの使用方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NETは、その強力なエコシステムと豊富なサポートのため、マイクロサービスを構築するために人気のある選択肢です。 1)asp.netcoreを使用してRestfulapiを作成して、順序の作成とクエリを処理します。 2)GRPCを使用して、マイクロサービス間の効率的な通信を実現し、注文サービスを定義および実装します。 3)Dockerコンテナ化されたマイクロサービスを介して展開と管理を簡素化します。

C#および.NETのセキュリティベストプラクティスには、入力検証、出力エンコード、例外処理、認証と承認が含まれます。 1)正規表現または組み込みのメソッドを使用して入力を検証して、悪意のあるデータがシステムに入るのを防ぎます。 2)XSS攻撃を防ぐための出力エンコード、httputility.htmlencodeメソッドを使用します。 3)例外処理により、情報の漏れが回避され、エラーが記録されますが、詳細情報はユーザーに返されません。 4)ASP.Netidentityおよび請求に基づく許可を使用して、不正アクセスから申請を保護します。

C言語におけるコロン( ':')の意味:条件付きステートメント:条件付き式とステートメントの分離ブロックループステートメント:初期化、条件付きおよび増分式のマクロ定義の分離:マクロ名とマクロ値の分離単一行コメント:コメントアレイの寸法としてのコロンから行までのコンテンツを表す:アレイの寸法を指定する


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
