gpt4 book ai didi

c# - 空文字参数类型重载解析

转载 作者:太空狗 更新时间:2023-10-29 17:57:36 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How does the method overload resolution system decide which method to call when a null value is passed?

这是一个关于为什么编译器在将 null 文字作为参数传递时选择特定重载的问题,由 string.Format 重载证明。

string.Format 在对 args 参数使用 null 文字时抛出 ArgumentNullException

string.Format("foo {0}", null);

Format 方法有一些重载。

string.Format(string, object);
string.Format(string, object[]);
string.Format(IFormatProvider, string, object[]);

运行反编译代码,第二个方法抛出了空文字参数的异常。但是,以下示例调用上面的第一个方法(如预期的那样),然后调用第二个方法,然后调用第三个方法,最终只返回“foo”。

string x = null;
string.Format("foo {0}", x);

string y;
string.Format("foo {0}", y = null);

但是 string.Format("foo {0}", null) 调用上面的第二个方法并导致 null 异常。在这种情况下,为什么编译器决定 null 文字匹配第二个方法签名而不是第一个?

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