相关疑难解决方法(0)

在ToString()之前检查null

这是场景......

if (entry.Properties["something"].Value != null)
  attribs.something = entry.Properties["something"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

虽然有效且正常工作,但这看起来很难看.如果我在执行ToString()之前没有检查null,那么如果属性为null,则抛出异常.有没有更好的方法来处理这种情况?

非常感激!

.net c# string properties

75
推荐指数
3
解决办法
8万
查看次数

为什么.ToString()在空字符串上会导致空错误,当.ToString()在具有空值的可空int上正常工作?

selectedItem 有两个领域:

  • int? _cost
  • string _serialNumber

在这个例子中,_cost_serialNumberselectedItem都是空.我正在阅读通过selectedItem他们的属性的字段,并填写文本框与他们的值,当...

TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
Run Code Online (Sandbox Code Playgroud)

我明白这SerialNumber.ToString()是多余的(因为它已经是一个字符串),但我不明白为什么这会导致这个异常:

可以为空的对象必须具有值.

  • int? _cost 可以为空,并且没有值,但它没有给我例外.
  • string _serialNumber可以为空,并且没有值,但它确实给了我例外.

这个问题触及它,这家伙基本上是在问同样的事情,但是没有指定的答案,而且它也没有解释为什么可以为空int?例如,我可以.ToString()在可空的int上使用但不能在空字符串上使用吗?

c# string int null nullable

69
推荐指数
3
解决办法
7626
查看次数

空字符串上的ToString

为什么第二个产生异常而第一个产生异常呢?

string s = null;
MessageBox.Show(s);
MessageBox.Show(s.ToString());
Run Code Online (Sandbox Code Playgroud)

更新 - 我能理解的异常,令人费解的一点(对我来说)是第一部分没有显示异常的原因.这与Messagebox没有任何关系,如下图所示.

例如:

string s = null, msg;
msg = "Message is " + s; //no error
msg = "Message is " + s.ToString(); //error
Run Code Online (Sandbox Code Playgroud)

第一部分似乎是隐式地将null转换为空字符串.

c# string null exception tostring

26
推荐指数
5
解决办法
6万
查看次数

测试NULL并在需要时返回一个字符串 - 什么是pro/con

我有一个简单的类,ToString实现了我对内容感到满意.我试图通过查看各种选项是否有任何赞成/反对来决定什么是(最)正确的方法.

对于以下示例:

  • 类: Astronaut
  • 变量类型Astronaut:person

我只是在这里选择雪球的选项:

  1. string result = person == null ? "Unknown Astronaut" : person.ToString();
  2. string result = person.ToString() ?? "Unknown Astronaut";
  3. string result = (person ?? "Unknown Astronaut").ToString();
  4. string result = person ?? (object)"Unknown Astronaut";

我对这些的看法是

  1. 非常冗长,我不需要那种冗长程度.
  2. 比1好多了,但ToString感觉很难看,还担心ToString代码中的异常.
  3. 这似乎很受欢迎(这里这里),但我不确定它会起作用.编译器是否会抱怨string&Astronauttype不是同一类型,因此不能用于coalese.
  4. 这是我现在最开心的那个,但它意味着一个盒子,ToString应该person是null.

综上所述:

  • 任何与上述任何人的关系?
  • 你能想到的任何选择?

c# string null coalesce

2
推荐指数
1
解决办法
644
查看次数

标签 统计

c# ×4

string ×4

null ×3

.net ×1

coalesce ×1

exception ×1

int ×1

nullable ×1

properties ×1

tostring ×1