问题标签 [nameof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
20259 浏览

c# - 没有指定类型的 C# 泛型类型名称

假设我有类型

在代码的某处,我想抛出与该类型的错误使用相关的异常:


到目前为止,一切都很好,但我不想硬编码类名,所以我想我可以使用

相反,但在这种情况下,我不知道确切的类型T。所以我想也许我可以用 C++ 中的模板专业化来做到这一点:

或者

但那些产量

类型参数的数量不正确。

缺少类型参数。


我绝对不想硬编码类名,因为它可能会在以后更改。我怎样才能得到班级的名字,最好是通过nameof

理想情况下,我想要实现的是"Cannot use A<T> like that."or "Cannot use A like that."

0 投票
1 回答
168 浏览

c# - 在编译时获取类的属性名称,无需对象实例化

是否可以在编译时获取类属性的名称(注意!)而无需对象实例化?
通过实例化,可以使用 nameof() 轻松完成:

0 投票
3 回答
448 浏览

c# - 为什么成员访问修饰符对 nameof() 很重要?

我对运营商有点困惑nameof()。因此,例如我不能nameof()在另一个类中使用类的私有字段,但我可以使用非静态属性public使用非static字段,所以我不需要实例化对象。 是否始终如一?为什么成员访问修饰符对 nameof() 很重要?


0 投票
1 回答
136 浏览

c# - How do I make MonoDevelop recognize nameof syntax from C# 6.0?

I'm in MonoDevelop v5.9.6. Although it seems to support C# 6.0, the editor doesn't recognize the nameof keyword, and it marks it red, because it tries to recognize it as if it were an identifier.

nameof appears red

Is there any hack I can use to make it work in the editor, without breaking the compilation somehow?

0 投票
1 回答
119 浏览

c# - 为什么编译器在使用这个 hack 时没有给出任何错误或警告?

在我的另一个问题中,我发现了一个使此语法在 MonoDevelop 编辑器中工作的技巧:

C# 编译器(Mono 和 VS)不会给出任何警告或错误,并且nameof关键字的使用也正常工作。我的问题是为什么。

0 投票
2 回答
105 浏览

c# - 是否可以使用反射检索属性的变量名(不是值)?

我正在尝试检索属性的变量名称,而不是值。我目前正在使用反射,但如果有人有其他建议,将不胜感激。

我涉及三个课程

A:

乙:

C:

我希望objName 返回字符串“bObject.number”,这是在属性内调用的变量。我目前的设置是否可以这样做,如果没有,是否有人有建议?

我宁愿在 B 中没有另一种方法来返回“nameof(bObject) + nameof(bObject.number)”,然后由于冗余而调用该方法和道具。谢谢你的时间。

0 投票
0 回答
140 浏览

c# - C# 将 nameof() 值作为变量返回

我想使用 nameof() 来获取变量名,以便稍后在 Undo/Redo 方法中使用它。在我的具体情况下,我有 2 个不同的类,我想使用 Undo/Redo 功能。

我的第一个想法是以某种格式将更改推送到堆栈。但是,我可以在代码本身中使用它吗?下面的代码可能吗?

0 投票
1 回答
178 浏览

c# - 在 Devexpress Gridcontrol 绑定中使用 nameof 指定 FieldName

我在我的应用程序中使用 Devexpress Gridcontrol,它正在以相当快的速度开发,随着需求变得更加清晰/发展,这通常涉及重构、更改属性名称等。

由于属性名称被硬编码到form.designer.cs文件中的字符串中,因此很难通过重构来获取。我使用 Resharper,我知道您可以选择该框以在字符串文字中进行搜索,但是当文本在我的项目中以不相关的字符串文字出现数百次时DescriptionManufacturer因此实施这种方式将非常耗时,坦率地说是浪费的时间。

使用nameof运算符提供了明确指定字段名称之间的桥梁,同时还为重构提供了开箱即用的支持。

从我的设计器文件中获取这个片段。

如果我将FieldName属性替换为

但是现在我无法打开此表单的设计器,错误代码'设计器无法nameof在第 125 行处理未知名称。方法 InitializeComponent 中的代码由设计器生成,不应手动修改。

有什么方法可以为 Devexpress 字段名称使用 nameof 表达式?

0 投票
1 回答
211 浏览

c# - 多级属性的 nameof() 运算符

以下表达式的 nameof() 等效项是什么:

0 投票
3 回答
1879 浏览

c# - 空检查多个参数并以其名称引发异常

我想验证多个参数并抛出一个ArgumentNullException如果它们中的任何一个是null. 为了争论,让我们假设我有这个:

当然,我可以这样做:

但这并不是特别漂亮,特别是如果它是整个应用程序中的重复签入。所以,我想我会这样做:

但是这样我就输了nameof。我不能这样做nameof(subject),因为那毫无意义。

当然,这是一个选项:

但它似乎容易出错,重复的参数......而且,老实说,只是不漂亮。

有这样做的好方法吗?理想情况下不使用任何外部库。