假设我有这个 C# 课程
public class MyClass {
int a;
int[] b = new int[6];
}
现在假设我使用反射发现了这个类,并且在查看字段时我发现其中一个是数组类型(即:b)
foreach( FieldInfo fieldinfo in classType.GetFields() )
{
if( fieldInfo.FieldType.IsArray )
{
int arraySize = ?;
...
}
}
我知道不能保证数组有一个创建数组的字段初始值设定项,但如果有,我想知道由字段初始值设定项创建的数组的大小。
有没有办法调用字段初始值设定项?
如果有的话我会做这样的事情:
Array initValue = call field initializer() as Array;
int arraySize = initValue.Length;
我唯一发现的是创建整个类的实例,但我宁愿不这样做,因为它太过分了......
好吧,你不能。
以下代码:
public class Test
{
public int[] test = new int[5];
public Test()
{
Console.Read();
}
}
将被编译为:
public class Program
{
public int[] test;
public Program()
{
// Fields initializers are inserted at the beginning
// of the class constructor
this.test = new int[5];
// Calling base constructor
base.ctor();
// Executing derived class constructor instructions
Console.Read();
}
}
因此,在创建该类型的实例之前,无法了解数组的大小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)