【问题标题】:Getting "Object Reference Error" while adding String.Format in StringBuilder在 StringBuilder 中添加 String.Format 时出现“对象引用错误”
【发布时间】:2012-05-23 14:16:32
【问题描述】:

将 string.format 放入 stringbuilder 时出现“对象引用错误”。我在 C#2.0 中有以下代码

public const string PageLinkGoogleMarkup = "<link rel=\"alternate\" hreflang=\"{0}\" href=\"{1}www.mysite.com{2}{3}\" />\r\n";

现在,当我将它添加到 HtmlTextWriter 时,它工作正常,如下所示:

HtmlTextWriter writer (Object);
writer.write(string.format(PageLinkGoogleMarkup,str[1],header,links,querystr)); //This works perfect

当我尝试将上面的代码添加到 StringBuilder 而不是 HtmlTextWriter 时,它会给出错误:

由于存在大循环,所以我决定先将所有内容附加到 StringBuilder,最后使用 writer.Write 进行渲染(一堆中的整个 html),请使用以下代码

StringBuilder sb = new StringBuilder();
sb.Append(string.format(PageLinkGoogleMarkup,str[1],header,links,querystr)); //here i get object reference error

writer.Write(sb.ToString());

请推荐!!

谢谢。

【问题讨论】:

  • 您的意思是“对象引用未设置为对象的实例”吗?
  • 是的,“对象引用未设置为对象的实例”

标签: c#-2.0 stringbuilder string.format


【解决方案1】:

以下变量之一在您在 StringBuilder 代码中使用时为空(但在工作代码中使用时不为空):

str (or the item in index [1])
header
links
querystr

使用调试器找出哪个是空的,修复它,代码应该可以正常工作。

【讨论】:

  • 我认为这不是问题,因为它与 writer.write..any 想法完美搭配
  • 你没有提供足够的代码来完全确定哪一个是空的,但我很确定这是问题所在。
  • 看到“querystr”可以为空但不能为空,因为如果当前页面有查询字符串,那么只有这个变量会有值,这会导致问题
  • 问题已解决,实际上 StringBuilder 对象进入 NULL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多