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

编程入门 行业动态 更新时间:2024-10-25 07:32:39
本文介绍了为什么空字符串上的 .ToString() 会导致空错误,而 .ToString() 在具有空值的可空 int 上工作正常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

selectedItem 有两个字段:

  • int?_成本
  • 字符串_serialNumber

在此示例中,selectedItem 的 _cost 和 _serialNumber 均为空.我正在通过它们的属性阅读 selectedItem 的字段,并用它们的值填充文本框,当...

In this example, _cost and _serialNumber of selectedItem are BOTH null. I am reading through the fields of selectedItem via their properties, and filling in textboxes with their values, when...

TextBox1.Text = selectedItem.Cost.ToString(); //no error TextBox2.Text = selectedItem.SerialNumber.ToString(); //error

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

I understand that SerialNumber.ToString() is redundant (because it is already a string), but I don't understand why this causes this exception:

可空对象必须有一个值.

Nullable object must have a value.

  • int?_cost 可以为空,并且没有值,但它没有给我异常.
  • string _serialNumber 可以为空,并且没有值,但它确实给了我异常.
    • int? _cost is nullable, and does not have a value, yet it does not give me the exception.
    • string _serialNumber is nullable, and does not have a value, yet it does give me the exception.
    • 这个 question 涉及到它,这家伙本质上是在问同样的事情,但是那里是没有指定的答案,它也没有解释为什么可以为空的 int?例如,我可以在可为空的 int 上使用 .ToString() 而不是在空字符串上使用吗?

      This question touches on it, the guy is essentially asking the same thing, but there is no designated answer, and it also doesn't explain why a nullable int? For example, can I use .ToString() on a nullable int but not on a null string?

      推荐答案

      因为 string 类型的 null 真的没有指向任何东西,所以内存中没有任何对象.但是 int? type(nullable) 即使值设置为 null 仍然指向某个对象.如果您阅读 Jeffrey Richter 的CLR via C#"您会发现可空类型只是普通类型的外观类,具有一些封装逻辑,以便更方便地使用 DB null.

      Because string type's null really points to nothing, there isn't any object in memory.But int? type(nullable) even with value set to null still points to some object.If you read Jeffrey Richter's "CLR via C#" you'll find out that nullable type are just facade classes for common types with some incapsulated logics in order to make work with DB null more convenient.

      查看 msdn 了解可空类型.

      Check msdn to learn about nullable types.

更多推荐

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

本文发布于:2023-11-08 07:56:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1568799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   工作   空字符串   ToString   int

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!