c# – 字符串数组加字符串不是错误,为什么?
我遇到了类似于以下代码:
var a = (new string [] {}) + string.Empty; 我想问一下: >为什么这个代码可以编译(为什么不是这种类型的错误)? 解决方法
.NET Framework中有3个
+ 运算符重载.
来自C#Spec $7.8.4 Addition operator string operator + (string x,string y); string operator + (string x,object y); string operator + (object x,string y); 这就是你的var a =(new string [] {})string.Empty;匹配第三个重载. 并且(对象x,字符串y)使用 public static String Concat(Object arg0,Object arg1) { if (arg0 == null) { arg0 = String.Empty; } if (arg1==null) { arg1 = String.Empty; } return Concat(arg0.ToString(),arg1.ToString()); } 因为新的string [] {}不是null,因为在MSIL中,它使用
这就是它最后使用 从它的文件;
结果你的a将是System.String []. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |