在分布式场景中,我们经常需要进行多个系统之间的通信,要实现这些通信往往需要不同的库对相应的需求进行处理。这些库为了实现跨平台和跨语言的兼容性往往利用数据名称和字符串来运行,但是这么做就会出现类型安全问题,并且大部分工具也无法支持。
针对前面所述的问题, C# 6.0 中新增了 nameof 表达式,这个表达式可以根据变量来获取包含其名称的字符串,从而使开发人员不需要将变量名称写成字符串。使用 nameof 的好处有如下两点:
- 如果属性名改变了,那么相关的参数也会改变;
- nameof 会根据符号找出表示这个符号名称的字符串,其中所说的符号可以是类型、变量、接口或者命名空间。在 nameof 面对各种各样的符号的时候,表现出了协调一致的特征,不管变量是使用完全限定方式传递的还是其他的方式,它总是返回局部名称。
同样 nameof 也存在需要注意的地方,当我们针对泛型使用它时,我们的泛型类必须是封闭的,开发人员必须把每个类型参数显示制定出来。
在 C# 中部分异常类型可接受 string 参数,这可以让开发人员将引发异常的变量名作为参数传递出去。例如当我们检测到某个参数为空时需要抛出异常可以这么做:
throw new ArgumentNullException(nameof(para),"参数类型为空");-
这么写的好处是静态分析工具可以检查是否把引发异常的变量名放置在了正确的位置上。
敬告:本篇文章首发于 喵叔的CSDN博客,未经授权任何网站、公众号、App 不允许转载,授权的网站、公众号、App 需明确标识本篇文章地址。需转载请联系 494324190@qq.com