- PR -

String変数の最大格納文字数

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-09-28 21:07
引用:
小野@どっとねっとふぁんさんの書き込み(2004-09-28 15:54)より:
既定は16ですけど、これは勝手に倍々と増えていきます。


 引用しているMSDNによると、デフォルトコンストラクタの場合は増えません・・・と、読み解きました↓
引用:

StringBuilder のインスタンスが初期化されるときに、容量または最大容量が指定されなかった場合は、実装に固有の既定の容量が使用されます。
割り当てられたメモリの量が実装固有で、必要なメモリ量が最大容量より大きい場合は、 ArgumentOutOfRangeException がスローされます。


が、例外の内容がわからないのでは、何とも言えませんけど。RepeatCountなんてパラメータは、StringBuilderに定義されてなさそうですから、他の部分で発生していませんか?>ちびぐまさん
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-09-28 23:25
StringBuilder.Append(Char,int)のタイプのAppendを使っていますか?
一応、intに変な値をいれたときに「ArgumentOutOfRangeException
パラメータ名:repeatCount」ってエラーを見たことがあります。ただ、
小さすぎるとがんばってAppendしようとするし、大きすぎると「十分なメモリが
ありませんでした」とか言われ、条件は微妙でした。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtextstringbuilderclassappendtopic17.asp
エラー情報では、メソッドのパラメータ名は内部で勝手に決まってるものを
出しますね。

CapacityプロパティとMaxCapacityプロパティがあって、Capacityを超えると
自動的にサイズを大きくしてくれるけど
StringBuilder(capacity,maxCapacity);
で指定した(あるいは既定の)maxCapacityは超えられない、という感じでしょうか。

ただ、一体どれくらいの大きさの文字列を作ろうとしたのでしょうか・・
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2004-09-29 10:56
べるさんの指摘通りです。
エラーメッセージは「パラメータ名:repeatCount 0未満には設定できません」
というものです。
出力しようとしていたのは160万文字くらいのものだと思います。
実際にどのくらいの文字数なのかはわかっておりません。
10万文字くらいのデータを削除したら正常に動作しました。
今のところデータを削除して正常に動いているのでプログラム修正はしていない状態です。

スキルアップ/キャリアアップ(JOB@IT)