如何获得另一个C#的易变名称?

问题描述

string MyVar1 = "bilah bilah";
dosometing(MyVar1);

    void dosometing(object MyObject)
    {
       string VarName = nameof(MyObject);   // it givess : "MyObject"
    }

但是我期望“ MyVar1”有办法吗?使用动态?还是参考?

解决方法

那是不可能的。但是您可以执行以下操作:

string MyVar1 = "bilah bilah";
dosometing(MyVar1,nameof(MyVar1));

void dosometing(string MyString,string VarName)
{
   // MyString holds the value
   // VarName holds the variable name
}
,

也许此信息对您有用。

由于您希望更改value的{​​{1}}和name,因此可以在属性的property内移动方法dosomething

(注意:我假设您实际上是在使用属性,而不是问题中显示的局部变量,并且您的问题只是简化了)

是这样的:

setter

属性public class Foo { private string _myVar1; public string MyVar1 { get => _myVar1; set { _myVar1 = value; DoSomething(value); } } private void DoSomething(string value,[CallerMemberName]string propertyName = "") { Console.WriteLine(value); Console.WriteLine(propertyName); } } 需要使用CallerMemberName

更多信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute

在此处查看实际操作:https://dotnetfiddle.net/YvqqdP

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...