如何从另一个 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);
}
代码示例
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);
}