きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

String ✖️ 最大文字数 ✖️ Max Length

あまり意識したことがなかったのですが、String型の最大Lengthについて調べてみました。

何から調べれば良いかわからないので、とりあえず公式のStringクラスの説明を見てみました。

String クラス (System)

 

備考欄を一部抜粋。。。

A string is a sequential collection of characters that is used to represent text. A String object is a sequential collection of System.Char objects that represent a string; a System.Char object corresponds to a UTF-16 code unit. The value of the String object is the content of the sequential collection of System.Char objects, and that value is immutable (that is, it is read-only). For more information about the immutability of strings, see the Immutability and the StringBuilder class section later in this topic. The maximum size of a String object in memory is 2GB, or about 1 billion characters.

書いてあるじゃん!

String Objectは2GB、もしくは約10億文字が最大サイズということでした!

 

 

 

•••以上終了かと思いつつも、Stack Over Flowで似たような議論を探してみました。 

https://stack-overflow.com/questions/140468/what-is-the-maximum-possible-length-of-a-net-string

56番目の方がやられていますが、ループで文字を増やして行く処理を実行すると、1億文字を超えたあたりでSystem.OutOfMemoryExceptionが発生するということでした。

公式の情報と、56番の人の情報のどちらが正しいか分かりません。。。

しかし、自分でも試してみたら1億文字以上でエラーになりました!(56番の人と同じ)

よって、1億文字くらいが最大文字数で良いと思いますw

そんな長い文字列を使うことは無いと思いますが、Stringは無制限でないということだけはっきりと認識しておきたいと思いました。

 

まとめ

  • Stringに格納する文字は1億文字までにする!
  • テストデータの作成には、new string(‘繰り返したい文字’,文字列の数)のコンストラクタが便利!