问题标签 [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 投票
2 回答
14057 浏览

c# - C# nameof 运算符可以在没有实例的情况下引用实例属性吗?

当我没有实例时,我经常想获取一个类型的实例属性的名称。目前为此,我使用以下内部函数来解释Expression[Func[T, object]]参数并返回属性名称:

但是,不使用内置nameof运算符似乎很可惜。

不幸的是,操作员似乎nameof需要一个实例,或者引用一个静态属性。

有没有一种巧妙的方法来使用nameof运算符而不是我们的内部函数?例如:

编辑

我完全错了,nameof(ClientService.EndDate)所描述的语法实际上是按原样工作的。

0 投票
4 回答
1811 浏览

c# - 表达式与名称

nameof使用overexpressions提取属性名称是个好主意吗?

但是叫法不一样

您知道每种方法有哪些优点和缺点?还是只有执行速度很重要?我的意思是编译nameof后将被替换。const

0 投票
2 回答
80 浏览

c# - C# - 将方法作为参数而不指定参数

我有一个方法需要将函数及其所有者类作为输入参数,然后通过反射处理其名称。当然,我可以将几个strings 作为输入参数,因此该方法如下所示:

并会这样称呼:

但是我想知道是否有任何方法可以避免nameof每次尝试调用该方法时都编写关键字。对我来说,类似的东西看起来Proceed<Foo>(f => f.Bar)会好很多。

我想这可以用表达式来解决。我面临的问题是,如果方法Bar有参数,则必须在调用方法时显式指定它们(在我的情况下这似乎过分,您以后只需要方法的名称)。

所以,我设法找到的最佳解决方案是这个

然而,它仍然在自己的 args 中指定参数方法的签名,因此不够通用。

我想知道是否有某种方法可以将函数作为参数传递而不指定其参数(前提是我以后只需要它的名称,就像nameof关键字一样)。

0 投票
2 回答
1384 浏览

c# - Qt 的 moc/C++11 是否与 C# 的 nameof() 运算符等效?

Qt 的 moc/C++11 是否有相当于 C# 的nameof()运算符?Qt 有 moc 系统,它是/做了某种反射,但我不知道如何获得像 C#'s 这样的变量名nameof()。这可能吗?

0 投票
2 回答
1479 浏览

c# - 将属性作为函数参数传递,并将其名称转换为内部字符串

我希望能够将任何可能的类型作为函数参数传递。

现在,传递属性存在问题,例如。

我可以使用:nameof(Foo.Bar),但我无法在 A(Foo.Bar) 中使用 nameof。

我想确定该字符串是从属性创建的,并且我想将属性传递给 API 并在 API 中执行 nameof。

有没有可能通过函数将属性传递给nameof?我想在我的类中隐藏将属性转换为字符串,而不是准备好字符串。如何做到这一点?

编辑:线索是关于:

是什么让 [?] 有控制台输出,例如: Prop.

0 投票
0 回答
348 浏览

c# - 使用 nameof 的 EF 点导航属性

拥有这个模型(所有属性都是单一(不是集合)导航属性)

为了获得每个级别的虚线名称,我们必须手动编写它。

对于我们可以使用的第一级,nameof(University.Department)但对于其余的我们有两个手动编写。

我们怎么能像这样简单nameof(University.Department.Classroom)呢?

PS我不想使用SelectSelectMany扩展方法,我需要将它们作为string值。

0 投票
2 回答
544 浏览

c# - 在 Roslyn 中解析 nameof 表达式

我正在尝试对nameofa 中的表达式做一些事情CSharpSyntaxWalker,但是,我注意到NameOfExpressionSyntaxAST 中没有。相反,我得到一个InvocationExpressionSyntaxfor whichSemanticModel.GetSymbolInfo返回不匹配的符号,并且调用的表达式是一个IdentifierNameSyntax包含标识符 token "nameof"

因此,为了识别nameof表达式,我会在 中添加一个特殊情况VisitInvocationExpression,查找是否GetSymbolInfo返回任何内容,如果没有,则查找标识符是否为nameof. 但是,这对我来说听起来有点不确定。有没有更好的方法可以将这种检测逻辑转移到解析器?

(PS:我知道这可能是出于向后兼容性的原因解析的;只是想知道是否有用于区分nameof和正常调用的 API。)

0 投票
1 回答
1334 浏览

c# - 是否可以使用 nameof 运算符来暗示 params 数组的参数名称?

我想我可以利用新的 c# 6 运算符 nameof 从 params 数组隐式构建键/值字典。

例如,考虑以下方法调用:

我不确定是否会有一个 Test 的实现能够从 params 数组中暗示元素的名称。

有没有一种方法可以做到这一点nameof,而无需反射?

0 投票
1 回答
672 浏览

c# - 为什么不允许使用 nameof(object)?

在 C# 6.0 中,您可以这样写:

它们具有相同的结果:

但你不能这样写:

它会产生以下错误:

无效的表达式术语“对象”。

但是你仍然可以这样写:

为什么nameof(object)不编译?

0 投票
6 回答
13940 浏览

java - Java 中的等价名称

C# 6.0 引入了nameof()运算符,该运算符返回一个字符串,该字符串表示放入其中的任何类/函数/方法/局部变量/属性标识符的名称。

如果我有这样的课程:

我可以像这样使用运算符:

这很有用,因为在编译时会检查正确的字符串。如果我拼错了某些属性/方法/变量的名称,编译器会返回错误。此外,如果我重构,所有字符串都会自动更新。例如,请参阅本文档以了解实际用例。

Java中是否有与该运算符等效的?否则,我怎样才能获得相同的结果(或类似的结果)?