検索
ホームページバックエンド開発C#.Net チュートリアルC# ジェネリック リスト List の基本的な使い方のまとめ

サンプルコードは以下の通りです。
namespace SampleListT
{
class Program
{
static void Main(string[] args)
{
//using System.Collections.Generic List
//using System in名前空間 .Collections; 名前空間の ArrayList
//どちらもリスト コレクションを実装しており、1 つはジェネリック コレクションで、もう 1 つは非ジェネリックです
// 次に、コレクションに person オブジェクトを追加します

person p1 = new person ( "aladdin " , 20 );
person p2 = new person("zhao", 10);
person p3 = new Person("jacky", 40);

//リストのコンテナサイズが指定されていない場合、デフォルトは 0 ですが、要素が追加されると自動的に 4 に拡張されます。5 番目の要素が追加されると 8 になり、9 番目の要素が追加されると 16 になります
//常に指数関数的に増加するため、メモリを再度開くと効率に影響を与えるため、要素の数が事前にわかっている場合は、できるだけ大きなトレードオフ値を指定するのが最善です。可能な限り
//要素を 3 つ追加し、コンテナのサイズを 4 に設定します。 注: 4 つの要素しか配置できないというわけではありません。これを超えると指数関数的に拡張されます。展開によって生じるオーバーヘッド
List list = new List(4);

list.Add (p1);
list.Add(p2);
list.Add(p3);

//このメソッドは、余分な未使用のメモリ領域をクリアします。たとえば、割り当てサイズが 100 で、4 つだけを使用する場合、残りを残すのは無駄ではないでしょうか? //このメソッドが呼び出されたときに、要素の数がコンテナ サイズの 90% 以上を占める場合、リサイクルされません。
list.TrimExcess();

//ArrayList メソッドは List と同じように使用されますが、違いはオブジェクトのコレクションであり、パラメーターが Object であるため、ボックス化およびボックス化解除の可能性があることです。 . List を使ってみます

// これ以上のデモはありません

// 1 コレクターの初期化
// C# 3.0 以降、初期化関数が提供されていますが、IL では反映されません。
List l2 = new List() { 1 ,2 ,3 ,4 ,5 };

// 2 要素を追加する AddRange() このメソッドも ADD に変換されます。オブジェクトのバッチを一度に追加できます
List lists = new List(10);
//パラメータは更新する必要があるオブジェクト、または配列にすることもできます
list.AddRange( new Person[] { new Person( "aladdin" ,20) , new Person("zhao",6)});

//AddRange

List と同じ効果を持つ受信バッチ パラメーターを構築します。 = new List(new Person[] { new Person( " aladdin" ,20) , new Person("zhao",6)});

// 3 要素を挿入します
// Insert() を使用しますこのメソッドを使用すると、指定した位置に要素を挿入できます
// たとえば、位置 1 に挿入します。その後、最終的にアラジン ジャッキー ジャオになりました。挿入とは、この位置を前と後の位置に配置したことを意味します。彼はすべて 1 つ前に移動されます
mylist.Insert( 1 , new person( "jacky" , 88 ));

foreach (mylist の person p)

{
Console.WriteLine(p.name);
}

// 4 つのアクセス要素
// ArrayList と List はどちらもインデックスを提供します
Console.WriteLine( "--------------- 要素へのアクセス---------- ----------- --");

for (int i = 0; i {
Console.WriteLine(mylist[i].name);
}
//foreach ドロップ ジェネレーターを使用することもできます。実装するには、これ以上の例はありません
//Foreach メソッドを使用します

//public delegate void Action(T obj); 例ではデリゲートをパラメータとして使用します
// Day 式を使用していくつかの場所を実装します
Console.WriteLine( "------出力するには ForEach メソッドを使用します--------------- ---------------- ");

mylist.ForEach( param => Console.WriteLine(param.name) ) ;

// 5 要素の削除
//要素を削除するには、RemoveAt() を使用してインデクサー値を直接渡すことができます
// 最初の要素を直接削除します
mylist.RemoveAt(0);
//削除する要素を Remove メソッドに渡すこともできます

リスト lists2 = 新しいリスト(10);

人per1 = 新しい人( "aladdin" , 100 );

人per2 = 新しい人("zhao", 100);
人per3 = 新しい人("ジャッキー", 100);

lists2.Add(per1);

lists2.Add(per2);
lists2.Add(per3);

lists2.Remove(per3);

Console.WriteLine( " --------削除された要素--------" );

foreach (person per in lists2)
{
Console.WriteLine(per.name);
}
//結果から、Jacky という名前の要素が削除されたことがわかります
// の削除プロセスについて話しましょうRemove メソッド
// IndexOf メソッドを使用してオブジェクトのインデックスを決定し、インデックスによって削除します
// IndexOf メソッドでは、まず要素が IEquatable インターフェイスを実装しているかどうかを確認し、実装されている場合は Equals メソッドを呼び出します。このインターフェース
// 実装されていない場合は、Object の Equals メソッドを呼び出して要素を比較 (つまり、アドレス比較) します
// 上記では per3 を削除しましたが、これは明らかにアドレスであるため、削除されました

//次に Person を変更して IEquatable// 結果はすべて 3 です
// オブジェクトを削除したい場合は、 Remove メソッドは一連のプロセスの後、最後にインデックスによって削除するため、インデックスを使用して直接削除するのが最善です!

//RemoveRange() は範囲を削除します
//最初のパラメータの開始位置
//lists2.RemoveRange(1, 2);
//Console .WriteLine( "一括削除後----------------");

//foreach (person per in lists2)
//{
// Console.WriteLine(per. name);
//}


// 6 検索
// IndexOf を使用して検索することができます。 LastIndexOf FindIndex FindLasIndex FindFindLas 要素が存在するかどうかを確認したいだけの場合は、Exists() メソッドを使用できます
// IndexOf( ) メソッドは、オブジェクトがヒットした場合、そのインデックスを返します。コレクション内の要素が見つからない場合は、-1 を返します。IndexOf は、IEquatable インターフェイスを使用して要素を比較することもできます

List(10);

person1 = new person ("アラジン", 100);
人物 person2 = 新しい人物("zhao", 100);
人物 person3 = 新しい人物("ジャッキー", 100) ;

ls3.Add(person1);
ls3.Add( person2);
ls3.Add(person3);

// デフォルトのアドレス比較を使用するために、一時的に Person インターフェイス
int Index = ls3 を削除します。 IndexOf(person3);
Console.WriteLine( "index of per3 :" + Index); //2
// 検索範囲を 3 番目から指定することもでき、範囲の長さは 1
int Index2 = ls3.IndexOf(person3 ,2,1);
Console. WriteLine(index2);
//IEquatable 比較メソッドは以前に記述されているため、例は示しません

//FindIndex() メソッドは、特定の特性を持つ要素を検索するために使用されます
//例 パラメーターとしてデリゲートを使用する public delegate bool Predicate(T obj);

intindex3 = ls3.FindIndex(param => param.name.Equals("jacky"));
Console.WriteLine(index3 );/ / 2
// FindLastIndexここには重複する要素がないため、1 つだけを見つけて停止する効果は反映されません。 ("aladdin"));
Console.WriteLine(index4);
//Find メソッドは、要素自体を返す点を除いて、FindIndex メソッドと同じように使用されます
person ppp = ls3.Find( p => p .name.Equals("jacky")) ;
Console.WriteLine(ppp);

// 最初の要素を見つけたときに停止するのではなく、一致する要素をすべて検索したい場合は、FindAll メソッドを使用します

//年齢が 100 に等しいすべてのオブジェクト、およびそのうちの 3 つが
List newList = ls3.FindAll(p => p.age == 100);

Console.WriteLine( "----- - ----すべて検索---------");

foreach (person p in newList)

{
Console.WriteLine(p.name);
}

// 7 Sort
/ / リストは Sort メソッドを使用して並べ替えることができます。実装アルゴリズムはクイック ソートです
// このメソッドにはいくつかのオーバーロードがあります

// このメソッドは、要素に IComparable が実装されている場合にのみ使用できます。実装されている場合は、sort を 1 回直接呼び出すと、順序がソートされます
// public void Sort(Comparison 比較); // 私たちの担当者はそのインターフェイスを実装していないため、汎用のデリゲートを使用する必要があります。パラメータとして
//public void Sort(IComparer Comparer); //パラメータとしての汎用インターフェイス public delegate int Comparison(T x, T y);
//public void Sort(int index, int) count, IComparer Comparer); //範囲を指定できます

List(10);

person4 = new Person("aladdin", 100); person5 = 新しい人 ( "zhao", 33);

人 person6 = 新しい人 ("ジャッキー", 44);

ls4.Add(person4);

ls4.Add(person5);

ls4.Add(person6) ;

ls4.Sort(MyComparFunc);

Console.WriteLine( "-------------並べ替え済み---------------");


foreach ( ls4 の person p)

{

Console.WriteLine(p.name+ p.age );
}

Console.WriteLine( "----------順序を逆にします---------- --- ----");

ls4.Reverse();


foreach(ls4の人p)

{

Console.WriteLine(p.name+p.age);
}


// 8 タイプ変換
//コレクション内の要素を任意のタイプの要素に変換できます。たとえば、コレクション内の person を Racer オブジェクトに変換したいとします。Racer には名前のみが含まれ、年齢は含まれません。 // public ListConvertAll(Converterconverter);
// public デリゲート TOutput Converter(TInput input); ls5 = ls4.ConvertAll((input ) => new Racer(input.name)) ;

Console.WriteLine( "----------変換されたもの--------");

foreach (Racer r in ls5)

{
Console.WriteLine(r.name);
}

// 9 読み取り専用コレクション

// コレクションが作成された後は、読み取りおよび書き込み可能でなければなりません。新しい要素は追加されましたが、入力が完了したと思われる場合は、何も変更しないでください。
// 読み取り専用コレクションを使用し、AsReadOnly メソッド () を使用して ReadOnlyCollection を返すことができます。これは List 操作と同じですが、コレクションを変更する操作が発生すると、例外が発生します

ReadOnlyCollection ();

Console.WriteLine("読み取り専用コレクションを出力 ");

foreach (レーサー r in persss)

{

Console.WriteLine(r.name);

}

Console.ReadLine();

}

//比較用に書かれた委任実装メソッド

public static int MyComparFunc(Person p1, Person p2)

{

if (p1.age == p2.age)
{
return 0;
}
else if ( p1.age>
}
}
}


C# ジェネリック リスト List の基本的な使い方の概要に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C#.NETエコシステム:フレームワーク、ライブラリ、およびツールC#.NETエコシステム:フレームワーク、ライブラリ、およびツールApr 24, 2025 am 12:02 AM

C#.NETエコシステムは、開発者がアプリケーションを効率的に構築できるようにするための豊富なフレームワークとライブラリを提供します。 1.ASP.NETCOREは、高性能Webアプリケーションの構築に使用されます。2.EntityFrameWorkCoreは、データベース操作に使用されます。これらのツールの使用とベストプラクティスを理解することにより、開発者はアプリケーションの品質とパフォーマンスを向上させることができます。

azure/awsへのc#.netアプリケーションの展開:ステップバイステップガイドazure/awsへのc#.netアプリケーションの展開:ステップバイステップガイドApr 23, 2025 am 12:06 AM

c#.netアプリをAzureまたはAWSに展開する方法は?答えは、AzureAppServiceとAwselasticBeanStalkを使用することです。 1。Azureでは、AzureAppServiceとAzurePipelinesを使用して展開を自動化します。 2。AWSでは、Amazon ElasticBeanstalkとAwslambdaを使用して、展開とサーバーレス計算を実装します。

C#.NET:強力なプログラミング言語の紹介C#.NET:強力なプログラミング言語の紹介Apr 22, 2025 am 12:04 AM

C#と.NETの組み合わせにより、開発者に強力なプログラミング環境を提供します。 1)C#は、多型と非同期プログラミングをサポートします。2).NETは、クロスプラットフォーム機能と同時処理メカニズムを提供し、デスクトップ、Web、モバイルアプリケーション開発で広く使用されています。

.NETフレームワーク対C#:用語のデコード.NETフレームワーク対C#:用語のデコードApr 21, 2025 am 12:05 AM

.NetFrameworkはソフトウェアフレームワークであり、C#はプログラミング言語です。 1..netframeworkは、デスクトップ、Web、モバイルアプリケーションの開発をサポートするライブラリとサービスを提供します。 2.C#は.NetFrameWork用に設計されており、最新のプログラミング機能をサポートしています。 3..NetFrameworkはCLRを介してコード実行を管理し、C#コードはILにコンパイルされ、CLRによって実行されます。 4. .NetFrameWorkを使用してアプリケーションをすばやく開発し、C#はLINQなどの高度な関数を提供します。 5.一般的なエラーには、タイプ変換と非同期プログラミングデッドロックが含まれます。 VisualStudioツールは、デバッグに必要です。

C#.NETの分解:初心者の概要C#.NETの分解:初心者の概要Apr 20, 2025 am 12:11 AM

C#は、Microsoftが開発した最新のオブジェクト指向プログラミング言語であり、.NETはMicrosoftが提供する開発フレームワークです。 C#は、CのパフォーマンスとJavaのシンプルさを組み合わせており、さまざまなアプリケーションの構築に適しています。 .NETフレームワークは、複数の言語をサポートし、ガベージコレクションメカニズムを提供し、メモリ管理を簡素化します。

C#と.NETランタイム:それらがどのように連携するかC#と.NETランタイム:それらがどのように連携するかApr 19, 2025 am 12:04 AM

C#と.NETランタイムは密接に連携して、開発者に効率的で強力なプラットフォームの開発機能に力を与えます。 1)C#は、.NETフレームワークとシームレスに統合するように設計されたタイプセーフおよびオブジェクト指向のプログラミング言語です。 2).NETランタイムは、C#コードの実行を管理し、ガベージコレクション、タイプの安全性、その他のサービスを提供し、効率的でクロスプラットフォームの操作を保証します。

C#.NET開発:始めるための初心者向けガイドC#.NET開発:始めるための初心者向けガイドApr 18, 2025 am 12:17 AM

C#.NET開発を開始するには、次のことが必要です。1。C#の基本的な知識と.NETフレームワークのコア概念を理解する。 2。変数、データ型、制御構造、関数、クラスの基本概念をマスターします。 3。LINQや非同期プログラミングなど、C#の高度な機能を学習します。 4.一般的なエラーのためのデバッグテクニックとパフォーマンス最適化方法に精通してください。これらの手順を使用すると、C#.NETの世界に徐々に浸透し、効率的なアプリケーションを書き込むことができます。

C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。