当前位置:  开发笔记 > 编程语言 > 正文

nameof()在当前上下文中不存在?

如何解决《nameof()在当前上下文中不存在?》经验,为你挑选了1个好方法。

所以我想做的很简单。

我正在nameof()某些基本类型上运行A ,因为我需要这些常量来满足特定需求。

但是当我尝试这样做时,例如nameof(bool)它说nameof()在当前上下文中不存在。

所有同义词似乎都是这样吗?

还有其他方法可以做到吗,还是我错过了一些东西。

我想做的是

public static readonly string BoolConstant= nameof(bool); 

预期结果:

BoolConstant= "bool";

我将所有这些常数记下来吗?



1> Akash Kava..:

nameof仅适用于Type及其成员,不适用于关键字,bool是关键字,基本上bool是的缩写Boolean

试试看nameof(Boolean),它有效。

根据MS文档,

nameof_expression
    : 'nameof' '(' named_entity ')'
    ;

named_entity
    : simple_name
    | named_entity_target '.' identifier type_argument_list?
    ;

named_entity_target
    : 'this'
    | 'base'
    | named_entity 
    | predefined_type 
    | qualified_alias_member
    ;

named_entity可以是simple_namesimple_name可以是带有类型参数列表的标识符,在此语法中没有任何地方说named_entity可以predefined_typeint, bool等等predefined_type

所以按照这个语法,

nameof(this)是不可接受的,但是nameof(this.Property)同样地,不能在内部使用任何关键字nameof(..)。我不知道原因,但是似乎没有必要,并且这也会使编译器更难以区分使用关键字的语法。

nameof 本身也是一个关键字

C#中的关键字列表 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有