[英]C# Reflection Type.GetField array
我试图从字符串中读取变量数组并在控制台中显示它,但每次运行程序时都会出现错误:“对象引用未设置为 object 的实例。” 谁能建议如何做到这一点?
我的代码:
public class Positions
{
public static string[] test = { "test", "test2" };
}
private void test()
{
Positions pos = new Positions();
Type type = typeof(Positions);
FieldInfo fi = type.GetField("test[0]");
Console.WriteLine(fi.GetValue(pos));
}
这一行:
FieldInfo fi = type.GetField("test[0]");
返回 null。 您没有名为"test[0]"
的字段。 它被称为test
。
所以,让我们得到它:
var fi = typeof(Positions).GetField(nameof(Positions.test));
然后阅读它:
Positions pos = new Positions();
它是 static,我们不需要实例:
var fi = typeof(Positions).GetField(nameof(Positions.test))!; // We know it is not null
var value = fi.GetValue(null) as string[];
Console.WriteLine(value[0]); // value could be null
感叹号是告诉分析仪这些不是null。 不,它不会神奇地使它们不是 null。 它只是禁用警告。 顺便说一句,它可能对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.