C#6.0引入了nameof()操作符,它返回一个字符串,表示放入其中的任何类/函数/方法/局部变量/属性标识符的名称。如果我有这样的类(class):classMyClass{publicSomeOtherClassMyProperty{get;set;}publicvoidMyMethod(){varaLocalVariable=12;}}我可以像这样使用运算符://withclassname:vars=nameof(MyClass);//s=="MyClass"//withproperties:vars=nameof(MyClass.OneProperty);//s=="OneP
在Swift中,您可以轻松地获得枚举的案例名称的字符串表示,就像这样......enumFoo{caselaa1caselaa2caselaa3}letvarHoldingTheStringLaa1=String(Foo.laa1)//Returnsthestring'laa1'但是,我不知道如何为类(class)成员做同样的事情,就像这样......classFoo{varlaa1:String=""varlaa2:String=""varlaa3:String=""}//Noneofthesework...letvarHoldingTheStringLaa1=String(laa1
新推出的nameof运算符在使我的代码成为我的“类型”时很有用。代替returnRedirectToAction("Edit");我们可以写returnRedirectToAction(nameof(Edit));但是获取Controller的名称并不是那么简单,因为我们有一个Controller后缀。只是想知道我是否想要一个returnRedirectToAction(nameof(Index),controllernameof(Home));代替returnRedirectToAction("Index","Home");我们如何实现controllernameof运算符?
采用以下类和方法:publicclassFoopublicFooCreate(stringbar){returnnewFoo(bar);}所以获得“Create”是显而易见的:nameof(Foo.Create)除了在运行时使用反射读取参数之外,还有什么方法可以获取“bar”吗? 最佳答案 没有。无法使用nameof从方法外部获取参数名称。nameof不适用于方法参数,如果你想要调用方的名称(对于被调用者它显然有效)。您提到的其他方法(例如反射)确实有效。varparameterNames=typeof(Program).GetMe
在VisualStudio2015和c#6中引入了“nameof”表达式nameof(C#andVisualBasicReference)如何在.netFramework4等旧版本中使用它或编写类似的方法。 最佳答案 如果您谈论的是C#6之前的C#的等效项,这将完成属性的工作(以一种hacky的方式)。它可能会扩展到包括字段、方法等。publicstaticclassTestExtension{publicstaticStringnameof(thisTobj,Expression>propertyAccessor){if(prop
如果我错了请纠正我,但是做一些类似的事情vartypeOfName=typeof(Foo).Name;和varnameOfName=nameof(Foo);应该给你完全相同的输出。根据此来源,可以理解的原因之一:https://msdn.microsoft.com/en-us/library/dn986596.aspx是吗"Usingnameofhelpskeepyourcodevalidwhenrenamingdefinitions"如果您想将类实例作为字符串获取,不可能那样做:varfooInstance=newFoo();varnameOfName=nameof(fooInsta
C#6中最方便的新特性之一是nameof,这允许程序员有效地消除magicstrings的使用.根据文档,nameof返回一个字符串:Usedtoobtainthesimple(unqualified)stringnameofavariable,type,ormember.在以下代码示例中使用显式键入就可以正常工作:stringmagicString=nameof(magicString);但是,当使用varkeyword的隐式类型时:varmagicString=nameof(magicString);编译器抛出一个错误:Cannotuselocalvariable'magicStr
已经浏览、搜索和希望但找不到直接的答案。在C#6.0中是否可以使用nameof获取当前方法名称而不指定方法名称?我正在将我的测试结果添加到这样的字典中:Results.Add(nameof(Process_AddingTwoConsents_ThreeExpectedRowsAreWrittenToStream),result);如果我不必明确指定方法名称,我会更愿意,这样我就可以复制并粘贴该行,这是一个无效的示例:Results.Add(nameof(this.GetExecutingMethod()),result);如果可能我不想使用反射。更新这不是(如建议的那样)thisque
我正在使用VS2013和.NetFramework4.6。我想使用新的C#6功能(例如nameof)。但我找不到它。我应该使用VS2015吗?还是更高的.NetFramework? 最佳答案 是的,要使用C#6功能,您需要一个C#6编译器。VisualStudio2013没有C#6编译器。VisualStudio2015可以。有VisualStudio2013的Roslyn预发布版,但它们没有实现最终的C#6:它们实际上没有实现所有功能,并且它们实现的内容与最终的C#6行为不同。 关于c