如何从另一个 Class C# 调用变量名

How To Call Variable Name From Another Class C#

代码示例

class Main{
        Name Jack = new Name();
        Jack.Speak();
}

class Name{
     public string speak(){
        Console.WriteLine("Hello", valuename);
      }
      
     public Name()
     {
       valuename = nameof(Jack); 
     }
}

输出我正在搜索的内容:

Hello Jack. 

如果用户键入 Name Joe = new Name(); 输出将是 Hello Joe.

局部变量名是大部分被编译器丢弃的语法糖,因此没有直接的方法来做到这一点。

最接近的方法是使用 [CallerArgumentExpression] 让编译器捕获传递给参数的源代码表达式,但这仅适用于方法参数并且将捕获整个表达式,而不仅仅是变量的名称。例如,下面的程序将打印 jack 然后 jack + "hello":

using System;
using System.Runtime.CompilerServices;

class Program {
    static void Main()
    {
        var jack = "dummy";
        WriteExpression(jack);
        WriteExpression(jack + "hello");
    }

    static void WriteExpression(
        string param, 
        [CallerArgumentExpression("param")] string paramExpression = null
    ) => Console.WriteLine(paramExpression);
}