gpt4 book ai didi

c# - `nameof()` 在当前上下文中不存在?

转载 作者:行者123 更新时间:2023-11-30 13:53:27 27 4
gpt4 key购买 nike

所以我想做的很简单。

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

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

这似乎是所有同义词的情况?

有没有其他方法可以做到这一点,或者我错过了什么。

我想做的是

public static readonly string BoolConstant= nameof(bool); 

预期结果:

BoolConstant= "bool";

我必须写下所有这些常量吗?

最佳答案

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

尝试 nameof(Boolean),它有效。

根据 MS Documentation ,

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) 是 Not Acceptable ,但是 nameof(this.Property) 是可接受的,同样在 nameof(..) 中不能使用关键字。我不知道原因,但这似乎是不必要的,而且它会使编译器更难以区分使用关键字的语法。

nameof本身也是一个关键字

C# 中的关键字列表 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/

关于c# - `nameof()` 在当前上下文中不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58851343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com