2017-02-02 4 views
-1

は、誰かが私には、以下のC#でのすべてのSQL ServerのVARCHAR型を取得

private static IEnumerable<char> AllSqlVarChars() 
{ 
    List<char> chars = new List<char>(256); 
    for(byte b = 0; b <= 255; ++b) 
     chars.Add((char)b); 
    return chars;  
} 

Fatal Error: Memory usage limit was exceeded

を取得していますなぜ私が把握助けたり、私が得るためのより良い方法を考え出す助けることができますSQL Server VARCHARに対応するすべてのC#charのコレクション。

+1

あなたは何正確にしようとしている? – Fourat

+2

データベースのデフォルトの照合でサポートされているすべての文字のリストを探していますか?そこには、私は恐れている、それを取得する簡単な方法はありません。特に、0から255までの列挙は、照合がマルチバイトになる可能性があるため、それを行いません。日本語、中国語、タイ語などの場合、この素朴なアプローチは失敗します。実際の*問題は何ですか?照合で格納するすべての文字を照合で確実にサポートしたい場合は、照合と照合することができます(これらはすべて文書化された特定のエンコーディングを表します)。さらに良いことに、疑問があれば、 'NVARCHAR'を使います。 –

+0

実際には、最初の256のC#文字(コードポイントU + 0000からU + 00FF)に行き、おそらくこれらが「VARCHAR」に収まるかどうかを見ていると思います。それは実際には一般的にはあまり役に立たず、ちょうどあなたの実際の根本的な質問が何であるかをさらに疑問に思います。はい、コードの修正は簡単ですが、結果はどうですか? –

答えて

5

++ 255でバイトのデータ型は黙って0 で再びバイトを始めるオーバーフローするためですが

= 255 <ない値を表すことはできません試してみてください。

private static IEnumerable<char> AllSqlVarChars() 
{ 
    List<char> chars = new List<char>(256); 
    for (byte b = 0; b < 255; b++) 
    { 
    chars.Add((char)b); 
    } 
    return chars; 
} 
関連する問題