相关疑难解决方法(0)

如何为一个可能为空的对象做ToString?

有一种简单的方法可以执行以下操作:

String s = myObj == null ? "" : myObj.ToString();
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到以下几点,但我真的认为它是一个黑客:

String s = "" + myObj;
Run Code Online (Sandbox Code Playgroud)

如果Convert.ToString()有一个适当的重载将是很好的.

.net c# string null object

84
推荐指数
5
解决办法
8万
查看次数

空字符串上的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万
查看次数

如何在.net中引入可空类型?

在我们自己的Jon Skeet的C#中,他讨论了模拟值类型的'null'的3种方法:

  • 魔术值(例如最早可能的DateTime被视为'null')
  • 引用类型包装器
  • 布尔标志

提到可空类型使用第三种方法.可空类型究竟如何在引擎盖下工作?

.net c# nullable

20
推荐指数
1
解决办法
3848
查看次数

为什么null语句ToString()返回一个空字符串?

我只是想知道下两个语句之间有什么区别:

  1. 导致NullReferenceException - 没关系.

    object test1 = default(int?);
    object result = test1.ToString();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 返回一个空字符串"",为什么?

    object test2 = default(int?).ToString();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 这与2相同.

    int? test3 = null;
    if (test3.ToString() == string.Empty) //returns true
    {
        Console.WriteLine("int? = String.Empty, isn't it strange?").
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 而且只是为了好玩 - 我可以证明bool可以等于int值(嗯,怎么样?bool只能是false,或者是true,而int永远不会那样).

    if (default(int?).ToString() == default(bool?).ToString()) //returns true because both are empty strings
    {
        Console.WriteLine("int = bool");
    }
    
    Run Code Online (Sandbox Code Playgroud)

注意: default(int?)返回null.

c# nullable

16
推荐指数
1
解决办法
2950
查看次数

为什么有些方法可以工作而有些方法不能处理可为空的结构的空值?

开门见山:

int? i = null;
i.ToString(); //happy
i.GetType(); //not happy
Run Code Online (Sandbox Code Playgroud)

我得到一个非常相关的问题,它实际上解决了为什么i.ToString()工作正常.

编辑:刚刚发现这个角落的案例是这个SO线程中投票最多的案例!

.net c# struct nullable

13
推荐指数
1
解决办法
212
查看次数

c#中的Convert.ToString()和.ToString()方法

我知道Convert.ToString(obj)处理null值并且ToString(obj)不处理null值.这意味着如果obj值为null,它将抛出一个错误.

ex:- 
object b = null;
textBox1.Text = b.ToString(); // It will throw a null reference exception because the object value is null.
Run Code Online (Sandbox Code Playgroud)

这是正确的,并按预期工作.但,

ex:-
int? c = null;
textBox1.Text = c.ToString();
Run Code Online (Sandbox Code Playgroud)

我试过这种方式.但在这种情况下,它不会抛出空引用异常错误.为什么不抛出空引用异常错误.谁能回答?

建议欢迎.

c#

8
推荐指数
2
解决办法
753
查看次数

标签 统计

c# ×6

.net ×3

nullable ×3

null ×2

string ×2

exception ×1

object ×1

struct ×1

tostring ×1