ASP.NET Core Web API中CreatedAtAction内使用nameof的作用是什么?
nameof 在示例代码中的作用与必要性 nameof 是C#提供的编译时运算符,此处nameof(GetById)会在编译阶段转换为字符串常量 "GetById",刚好匹配CreatedAtAction方法第一个参数要求传入目标Action名称字符串的需求,运行效果和手动写死"GetById"字符串完全一致。
使用nameof的必要性主要体现在三点:
- 编译期错误检查
如果你后续修改了GetById方法的名称,比如重命名为GetProductById,如果这里写死的是字符串"GetById",代码编译不会有任何报错,只有程序实际运行调用这个创建接口时,才会触发路由匹配失败的500错误,排查成本很高。如果使用nameof(GetById),修改方法名后IDE会直接提示GetById标识符不存在,编译阶段就会报错,提前在开发阶段发现问题。 - 重构友好
使用IDE自带的重命名符号功能修改GetById方法名时,nameof包裹的标识符会自动同步修改,不需要手动全局查找替换所有用到这个方法名的字符串,避免漏改、错改的问题。 - 规避拼写错误
手动写字符串很容易出现拼写疏漏,比如把"GetById"写成"GetByID"(末尾ID大写)、"GetBtId"这类笔误,编译阶段完全无法发现,运行时才会暴露问题。用nameof的话只要拼写和方法名不一致,IDE会直接标红报错,完全规避这类低级错误。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

