-1

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

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

如果我替换注释掉的字符串(并注释掉现有的字符串)它工作正常,所以它一定与替换函数有关,但是什么?用 " 和 ' 引号都试过了,结果是一样的。

任何帮助将不胜感激。

谢谢,奥利。

4

3 回答 3

5

这基本上表明currentUser.GetValue("ClientName")正在返回一个空引用1。我们不知道是什么currentUser.GetValue("ClientName"),但有两种选择:

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

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

于 2012-03-20T11:59:53.160 回答
3

可能clientName(因此clientNameStr)为空。即使您知道它应该是一个字符串,也不能调用空对象上的方法。

于 2012-03-20T11:59:00.167 回答
0

currentUser.GetValue("ClientName") 可能返回 null,因此在尝试执行 Replace 时会引发错误。

更好的编码将是

clientName = currentUser.GetValue("ClientName");
string clientNameStr = clientName ?? "";
string clientURLStr = clientNameStr.Replace(' ', '-');
于 2012-03-20T12:00:40.037 回答