きなこもち.net

.NET Framework × UiPath,Orchestrator × Azure × AWS × Angularなどの忘備録

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

 

この記事の目的

この記事は、

.NET Frameworkで、Stringは最大何文字まで定義できるかについて調べること

を目的としています。

 

本題

まずは公式ドキュメントから!

あまり意識したことがなかったのですが、String型の最大Lengthについて調べてみました。何から調べれば良いかわからないので、とりあえず公式のStringクラスの説明を見てみました。

String Class (System) | Microsoft Docs 

 

備考欄を一部抜粋。。。

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(‘繰り返したい文字’,文字列の数)のコンストラクタが便利!