专栏首页喵叔's 专栏优先考虑 nameof

优先考虑 nameof

在分布式场景中,我们经常需要进行多个系统之间的通信,要实现这些通信往往需要不同的库对相应的需求进行处理。这些库为了实现跨平台和跨语言的兼容性往往利用数据名称和字符串来运行,但是这么做就会出现类型安全问题,并且大部分工具也无法支持。 针对前面所述的问题, C# 6.0 中新增了 nameof 表达式,这个表达式可以根据变量来获取包含其名称的字符串,从而使开发人员不需要将变量名称写成字符串。使用 nameof 的好处有如下两点:

  1. 如果属性名改变了,那么相关的参数也会改变;
  2. nameof 会根据符号找出表示这个符号名称的字符串,其中所说的符号可以是类型、变量、接口或者命名空间。在 nameof 面对各种各样的符号的时候,表现出了协调一致的特征,不管变量是使用完全限定方式传递的还是其他的方式,它总是返回局部名称。

同样 nameof 也存在需要注意的地方,当我们针对泛型使用它时,我们的泛型类必须是封闭的,开发人员必须把每个类型参数显示制定出来。

在 C# 中部分异常类型可接受 string 参数,这可以让开发人员将引发异常的变量名作为参数传递出去。例如当我们检测到某个参数为空时需要抛出异常可以这么做:

throw new ArgumentNullException(nameof(para),"参数类型为空");-

这么写的好处是静态分析工具可以检查是否把引发异常的变量名放置在了正确的位置上。

敬告:本篇文章首发于 喵叔的CSDN博客,未经授权任何网站、公众号、App 不允许转载,授权的网站、公众号、App 需明确标识本篇文章地址。需转载请联系 494324190@qq.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 少用 string.Format

    如果你使用的是 C# 6.0 及其以上版本的话我建议你使用新增的 内插字符串 这个功能。这个功能可以更好的帮助开发人员设置字符串格式。下面我们就来看一下为什么要...

    喵叔
  • FormattableString 取代特定区域字符串

    有些软件系统是针对全球来开发的,因此一些字符串需要根据不同地区不同语言做出特定的处理。如果针对不同地区不同用语言分别编写字符串处理方法的话代码量是巨大的。那么这...

    喵叔
  • 第三章--第三节:列表

    喵叔
  • 用hmmlearn学习隐马尔科夫模型HMM

        在之前的HMM系列中,我们对隐马尔科夫模型HMM的原理以及三个问题的求解方法做了总结。本文我们就从实践的角度用Python的hmmlearn库来学习HM...

    刘建平Pinard
  • 阿里面试官:分别说说微信和淘宝扫码登录背后的实现原理?

    扫码登录这个功能,最早应该是微信的PC端开始搞,虽然有点反人类的功能(不扫码也没别的方式登录),但不得不说还是很酷的。

    乔戈里
  • 单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?

    实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效

    艾编程
  • python第十七课——列表生成式

    1.列表生成式: 什么是列表生成式? 它就是一串表达式,专门用于生成列表对象,当中包含一系列的业务逻辑; 结构:简介、优雅、阅读性好;比传统获取列表对象来...

    hankleo
  • Python内置数据结构(一)

    Python 2 中的字符串是byte序列,Python 3 中的字符串是Unicode序列。 字符串是不可变的。 (1)字符串初始化

    魏晓蕾
  • JavaScript基础(3)

    城市中的游牧民族
  • 从一个sql引发的hive谓词下推的全面复盘及源码分析(下)

    词法语法解析—>语义解析—>生成逻辑执行计划—>优化逻辑执行计划—>生成物理执行计划—>优化物理执行计划

    数据仓库践行者

扫码关注云+社区

领取腾讯云代金券