获取元素在 foreach 中引用的内容的名称
Getting nameof what an element references in a 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
运算符比您暗示的要简单得多:它为您提供了 variable/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
您可以获得方法的字符串名称,属性,Class,变量...根据 nameof docs
我正在尝试获取 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
运算符比您暗示的要简单得多:它为您提供了 variable/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
您可以获得方法的字符串名称,属性,Class,变量...根据 nameof docs