我追加字符串變量文本,在追加一行後拋出System.OutOfMemoryException? 任何人都可以解釋爲什麼它會拋出錯誤。System.OutOfMemoryException
str+="something Text"
str+="something Text"
,最後我把它分配給lable
文本
當我指定的str
它拋出異常值.....
我追加字符串變量文本,在追加一行後拋出System.OutOfMemoryException? 任何人都可以解釋爲什麼它會拋出錯誤。System.OutOfMemoryException
str+="something Text"
str+="something Text"
,最後我把它分配給lable
文本
當我指定的str
它拋出異常值.....
也許你想串連了很多串。每次更改/ concat字符串時都會生成一個新的字符串,因爲string是不可變的類型。
嘗試使用StringBuider讓你大大串:)
var builder = new StringBuilder();
builder.Append("something Text");
builder.Append("something else");
builder.Append("etc.");
builder.ToString();
我認爲你有兩個問題:
<asp:Label>
爲你的東西這樣做。改爲嘗試<asp:Literal>
,或者向我們提供更多關於使用標籤的原因以及您想要完成的內容(視覺或HTML方面的內容)。System.Text.StringBuilder
而不是連接它與+=
。這樣可以提高性能並減少內存使用量,但由於您的異常似乎在label.Text = str;
上發生,因此只需用StringBuilder
代替級聯就不能解決問題。說你有這個ASP.NET標記:
<asp:Label id="MyLabel" runat="server" />
這個C#代碼隱藏:
<asp:Literal id="MyLiteral" runat="server" />
和:
string str = String.Empty;
str += "Some text "
str += "some more text";
MyLabel.Text = str;
嘗試替換這兩種
StringBuilder sb = new StringBuilder();
sb.Append("Some text ");
sb.Append("some more text");
MyLiteral.Text = sb.ToString();
另一種選擇是直接用Response.Write()
寫入輸出流。不知道你想要完成的是什麼,爲什麼你有這麼大的字符串,你最終得到了OutOfMemoryException
,恐怕很難幫助你。
這條單線看起來很好。請提供一個*完整的*例子。把你的程序,*儘可能多地從它*中刪除,然後發佈*最小的完整*程序,重現你所看到的錯誤。 – Heinzi
對不起,我不能發佈code.Posting可以爲我造成問題.......... – Vikky
有沒有任何地方有無限循環的機會? – CyberDude