当前位置: 首页 > 编程语言 > C#

ToStringonanEmptyString分享

时间:2023-04-10 14:13:34 C#

ToStringonanEmptyString为什么第二个产生异常,第一个产生异常?字符串s=空;MessageBox.Show(s);MessageBox.Show(s.ToString());更新-我可以理解异常,令人费解的一点(对我来说)是为什么第一部分没有显示异常。这与Messagebox无关,如下图所示。例如:strings=null,msg;msg="消息是"+s;//没有错误msg="Messageis"+s.ToString();//error第一部分似乎是将null隐式转换为空字符串。因为您不能在空引用上调用实例方法ToString()。MessageBox.Show()可以实现为忽略null并打印出一个空的消息框。这是因为MessageBox.Show()是使用pinvoke实现的,它调用本机WindowsMessageBox()函数。这不介意为lpText参数获取NULL。C#语言对纯.NET实例方法(如ToString)有更严格的规则,它总是发出代码来验证对象不为null。这篇博文中有一些背景信息。在你的后续问题/更新中例如,在幕后调用concatstringsnull=null;字符串味精=“你好”+snull;//等同于下面的行,concat会为您处理空字符串。stringmsg=String.Concat("你好",snull);//第二个示例失败,因为空对象字符串上的toStringmsg=String.Concat("hello",snull.ToString());//String.Format、String.Convert、String.Concat都能很好地处理空对象。由于这个问题在Google上的“c#toStringnull”排名很高,我想补充一点,Convert.ToString(null)方法返回一个空字符串。但是,只是为了重申其他答案,您可以在此示例中使用string.Concat("string",null)。您正在尝试对null执行ToString()方法。您需要一个有效的对象来执行方法。.show函数必须进行空检查并处理它。因为,第二次调用期望“s”的对象满足ToString()方法请求。因此s.ToString()在尝试调用该方法时会失败,直到调用.Show()为止。有趣的是,虽然.Show()的实现是正确的,但其中许多方法都希望传入一个非空实例。通常,当您使用NullObject模式时,调用者不必处理此行为。大概是Show方法处理了空值,什么都不显示。s-第二次使用s.ToString()失败,因为您没有运行ToString方法。以上就是C#学习教程:ToStringonemptystring分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: