gpt4 book ai didi

c# - 为什么 int 和 string 的连接在编译时没有报错

转载 作者:太空狗 更新时间:2023-10-29 20:01:08 25 4
gpt4 key购买 nike

我在 visual studio 中有以下内容,它没有提示:

int? int1;
int? int2;

string str = int1 + "-" + int2;

我的猜测是这会在运行时某处抛出异常,但为什么 visual studio 允许这样做?仅仅因为它可能为空? null int 的处理方式是否与 null 字符串相同?

最佳答案

+ 有许多重载运算符,其中两个是:

operator + (string s, object o)
operator + (object o, string s)

这样做的效果是您可以将任何类型的对象“添加”到字符串中。

重载的实现将使用ToString获取该对象的字符串表示并将其与字符串连接。但是,它会将任何空对象(或字符串)视为空字符串,并且不会在运行时抛出异常。

请注意,作为传递 int? 的结果到object它将导致值被装箱,因为它是一个结构,并且对装箱有特殊支持 Nullable<T>这样如果 HasValue为假(即它在逻辑上代表一个空值)它装箱 null而不是装箱 Nullable表示空值。

关于c# - 为什么 int 和 string 的连接在编译时没有报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30267293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com