Mat*_*vey 5 c# extension-methods
如果我定义一个扩展方法,如下所示:
static public String ToTitleCase(this string instance, CultureInfo culture)
{
if (instance == null)
throw new NullReferenceException();
if (culture == null)
throw new ArgumentNullException("culture");
return culture.TextInfo.ToTitleCase(instance);
}
Run Code Online (Sandbox Code Playgroud)
我是否有必要检查字符串实例是否为null并自己抛出空引用异常?或者CLR在这种情况下是否像实例方法一样处理扩展方法并为我处理检查/抛出?
我知道扩展方法只是静态方法的语法糖,也许C#编译器在编译时添加了检查?请澄清 :)
Luk*_*keH 28
号你应该永远不会抛出一个NullReferenceException手动.它应该只被框架本身抛出.
在这种情况下,你应该扔ArgumentNullException两个instance和culture:
static public String ToTitleCase(this string instance, CultureInfo culture)
{
if (instance == null)
throw new ArgumentNullException("instance");
if (culture == null)
throw new ArgumentNullException("culture");
return culture.TextInfo.ToTitleCase(instance);
}
Run Code Online (Sandbox Code Playgroud)
请注意,应用程序抛出
ArgumentNullException异常而不是NullReferenceException此处讨论的 异常.
| 归档时间: |
|
| 查看次数: |
12082 次 |
| 最近记录: |