C#Replace导致找不到对象引用错误

时间:2012-03-20 11:57:25

标签: c# replace object-reference

在字符串clientNameStr上使用“Replace”会导致“找不到对象引用”错误。

// Get client name
clientName = currentUser.GetValue("ClientName");
string clientNameStr = (string)clientName;
string clientURLStr = string.Empty;
clientURLStr = clientNameStr.Replace(' ', '-');
// clientURLStr = "ST9215-Stanic-Parts-Ltd";

如果我在注释掉的字符串中替换(并注释掉现有的字符串)它工作正常,所以它必须与替换函数有关,但是什么?用“和'引号标记尝试了同样的结果。

非常感谢任何帮助。

谢谢,Oli。

3 个答案:

答案 0 :(得分:5)

这基本上表明currentUser.GetValue("ClientName")正在返回空引用 1 。 我们无法分辨currentUser.GetValue("ClientName")的作用,但有两种选择:

  • 正确返回null,你应该处理
  • 不应该返回null,你需要修复它(如果遇到这种情况可能会抛出异常)

1 可能它返回一个非空引用,并在下一行中使用用户定义的转换字符串返回null - 但不太可能。我们无法确定,因为我们不知道clientName的类型。

答案 1 :(得分:3)

可能clientName(以及clientNameStr)为null。您无法调用null对象上的方法,即使您知道它应该是一个字符串。

答案 2 :(得分:0)

currentUser.GetValue(“ClientName”)可能返回null,因此在尝试执行Replace时会抛出错误。

更好的编码将是

clientName = currentUser.GetValue("ClientName");
string clientNameStr = clientName ?? "";
string clientURLStr = clientNameStr.Replace(' ', '-');