gpt4 book ai didi

c# - 内存效率 :Passing Html code of aspx page through codebehind

转载 作者:行者123 更新时间:2023-11-29 20:25:16 24 4
gpt4 key购买 nike

我的目标是以字符串形式生成页面的 aspx 代码。我通过 javascript 中的异步请求调用下面的代码隐藏代码,并通过 Response.Write 获取响应

        string html = string.Empty;
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(memoryStream))
{
var htmlWriter = new HtmlTextWriter(streamWriter);
base.Render(htmlWriter);
htmlWriter.Flush();
memoryStream.Position = 0;
using (var streamReader = new StreamReader(memoryStream))
{
html = streamReader.ReadToEnd();
streamReader.Close();
}
}
}
Response.Write(html);
Response.End();

我想问一下,上面的代码是否具有内存效率,我正在考虑使用“yield”,因为它是惰性评估的。你能对上面代码的内存效率提出建议吗?

最佳答案

使用 StringWriter 而不是 MemoryStream、StreamWriter 和 StreamReader:

string html;
using (StringWriter stream = new StringWriter()) {
using (HtmlTextWriter writer = new HtmlTextWriter(stream)) {
base.Render(writer);
}
html = stream.ToString();
}
Response.Write(html);
Response.End();

StringWriter 在内部使用 StringBuilder。 ToString 方法在 Stringuilder 上调用 ToString,因此它将内部字符串缓冲区作为字符串返回。这意味着字符串只创建一次,不会来回复制。

关于c# - 内存效率 :Passing Html code of aspx page through codebehind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1548518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com