C# では、整数インデックスまたは名前付きインデックスを使用してリーダー オブジェクトを読み取るより効率的な方法はどれですか?
ad.Name = reader.GetString(0);
また
ad.Name = reader["Name"].ToString();
C# では、整数インデックスまたは名前付きインデックスを使用してリーダー オブジェクトを読み取るより効率的な方法はどれですか?
ad.Name = reader.GetString(0);
また
ad.Name = reader["Name"].ToString();
オーバーname
ロードは、最初にインデックスを見つける必要があります。
大文字と小文字を区別するルックアップが最初に実行されます。失敗した場合は、大文字と小文字を区別しない 2 回目の検索が行われます (大文字と小文字を区別しない比較は、データベース照合を使用して行われます)。カルチャ固有の大文字と小文字の規則によって比較が影響を受けると、予期しない結果が発生する可能性があります。たとえば、トルコ語の場合、次の例では間違った結果が返されます。これは、トルコ語のファイル システムでは、"file" の文字 'i' に対して言語的な大文字小文字規則が使用されていないためです。
からGetordinal
(したがって使用されます):
序数ベースのルックアップは名前付きルックアップよりも効率的であるため、ループ内で GetOrdinal を呼び出すのは効率的ではありません。GetOrdinal を 1 回呼び出して、ループ内で使用する整数変数に結果を代入することで、時間を節約します。
そのため、ループ内では、序数インデックスを一度ルックアップして、それをループ本体で再利用する方が効率的かもしれません。
ただし、名前検索は、非常に効率的なを使用しているクラスによってサポートされています。HashTable
reader.GetString(index);
これにより、その列インデックスの行の値が文字列として取得されます。2 番目のソリューションは、そのインデックスの値を独自の優先型で取得できるため、より理想的です。
例:-
String name = reader["Name"].ToString();
int age = (int) reader["Age"]