本題
まずは公式ドキュメントから!
あまり意識したことがなかったのですが、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は無制限でないということだけはっきりと認識しておきたいと思いました。