[解決済み] C#の<T>は何を意味するのか [重複].
質問
私はC#の初心者で、受け取ったプロジェクトのためにいくつかのコードを修正するために直接飛び込んでいます。しかし、私はこのようなコードを見続けています。
class SampleCollection<T>
の意味がわからないし
<T>
は、その意味も呼び名も
もし誰かが、この概念が何と呼ばれているかを挙げるのを手伝ってくれるなら、私はそれをネットで検索することができます。しかし、今現在、私は何も知らないのです。
どのように解決するのですか?
これは 一般的な型パラメータ .
汎用型パラメータは、メソッドやクラス宣言で具象型を指定することなく、コンパイル時に任意の型Tをメソッドに指定できるようにするものです。
例えば
public T[] Reverse<T>(T[] array)
{
var result = new T[array.Length];
int j=0;
for(int i=array.Length - 1; i>= 0; i--)
{
result[j] = array[i];
j++;
}
return result;
}
は配列の要素を反転させます。 ここで重要なのは、配列の要素がどのような型であっても、この関数は動作することです。 メソッド呼び出しの際に型を指定することで、型の安全性は保証されます。
では、文字列の配列を反転させるには。
string[] array = new string[] { "1", "2", "3", "4", "5" };
var result = reverse(array);
で文字列の配列を生成します。
result
の
{ "5", "4", "3", "2", "1" }
これは、次のような普通の(汎用的でない)メソッドを呼び出したのと同じ効果があります。
public string[] Reverse(string[] array)
{
var result = new string[array.Length];
int j=0;
for(int i=array.Length - 1; i >= 0; i--)
{
result[j] = array[i];
j++;
}
return result;
}
コンパイラは
array
が文字列を含んでいることを認識し、文字列の配列を返します。 タイプ
string
が代入される。
T
型パラメータに置き換えられます。
一般的な型パラメータは、一般的なクラスを作成するために使用することもできます。 あなたが挙げた例では
SampleCollection<T>
を使用した場合、その
T
は任意の型のプレースホルダーであることを意味します。
SampleCollection
はオブジェクトのコレクションを表すことができ、その型はコレクションを作成するときに指定します。
では
var collection = new SampleCollection<string>();
は、文字列を格納できるコレクションを作成します。 このコレクションは
Reverse
メソッドは、コレクションのメンバを反転させるために多少異なる形で使用することができます。
関連
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み] 関数を終了するには?