我附加了一个字符串变量文本,在追加一行后抛出 System.OutOfMemoryException ? 任何人都可以解释为什么会抛出错误。
str+="something Text"
str+="something Text"
最后我将其分配给lable
文本
当我指定str
的值时,它会抛出异常.....
答案 0 :(得分:1)
我认为你有两个问题:
<asp:Label>
来做你正在做的事情。请尝试使用<asp:Literal>
或向我们提供有关您使用标签的确切原因以及您希望完成的内容(视觉上或HTML格式)的更多信息。System.Text.StringBuilder
构建字符串,而不是将其与+=
连接起来。这样可以提高性能并减少内存使用量,但由于您的异常似乎发生在label.Text = str;
,因此只需用StringBuilder
替换连接就无法解决问题。假设你有这个ASP.NET标记:
<asp:Label id="MyLabel" runat="server" />
和这个C#代码隐藏:
string str = String.Empty;
str += "Some text "
str += "some more text";
MyLabel.Text = str;
尝试用以下内容替换这两个:
<asp:Literal id="MyLiteral" runat="server" />
和
StringBuilder sb = new StringBuilder();
sb.Append("Some text ");
sb.Append("some more text");
MyLiteral.Text = sb.ToString();
另一种选择是使用Response.Write()
直接写入输出流。如果你不确切地知道你想要完成什么,以及为什么你有一个如此大的字符串,你最终会得到一个OutOfMemoryException
,我很难再帮助你了,我很害怕。
答案 1 :(得分:0)
可能你正试图连接很多字符串。每次更改/连接字符串时,都会生成一个新字符串,因为string是一个不可变类型。
尝试使用StringBuider来获取你的大字符串:)
var builder = new StringBuilder();
builder.Append("something Text");
builder.Append("something else");
builder.Append("etc.");
builder.ToString();