获取foreach中元素引用的名称



我正在尝试使nameof通过foreach循环传递一个变量。

string[] printThis = {"doesntMatter"};
string[] andThis = {"doesntMatter"};
string[][] arrayOfArrays = {printThis, andThis};
foreach(string element in arrayOfArrays)
{
    string theNameOfTheElement = nameOf(element);
    Console.WriteLine(theNameOfTheElement + " ");
}

而不是获得所需的结果

printThis andThis

我显然只得到:

element

这不允许吗?更好的方法?

nameof运算符比您所说的要简单得多:它为您提供了变量/field/type/etc的名称。您将其作为参数传递。在您的情况下,相当于"element"字符串。

除非将这些信息保存在单独的数组或集合中,否则无法找出用于设置string[][]元素的变量:

string[][] arrayOfArrays = {printThis, andThis};
string[] namesOfArrays =  {nameof(printThis), nameof(andThis)};

一种更好的方法是制作名称阵列对的集合:

var arrayOfArrays = {
    new {Name = nameof(printThis), Array=printThis}
,   new {Name = nameof(andThis), Array=andThis}
};
foreach (var p in arrayOfArrays) {
    Console.WriteLine(p.Name);
    ...
}

无法从值中找到变量的名称使用nameof,您可以获取方法,属性,类,变量的字符串名称...根据DOCS的名称

相关内容

  • 没有找到相关文章

最新更新