在C#中 String.Empty和 "" 有什么区别
展开全部
在C#里是一个常量表达式,所以可以用在所有要求用编译时常量的地方,例如attribute的参数、方法参数的默认值、switch里的case等等。
而
String.Empty
则是System.String类上的一个readonly静态字段。它虽然在运行时值不可变,但并不被看作编译时常量。所以上述要求用编译时常量的地方它都用不了。
另外一个恶心的功能是在有权限的情况下String.Empty可以通过反射修改值;这在.NET 4.0及之前能起作用,而从.NET 4.5开始由于CLR做了更多优化,就不管用了。
而
String.Empty
则是System.String类上的一个readonly静态字段。它虽然在运行时值不可变,但并不被看作编译时常量。所以上述要求用编译时常量的地方它都用不了。
另外一个恶心的功能是在有权限的情况下String.Empty可以通过反射修改值;这在.NET 4.0及之前能起作用,而从.NET 4.5开始由于CLR做了更多优化,就不管用了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询