应该说.net 里面的关键字都是有一个类对应的,比如int->Int32,enum->Enum,struct->ValueType, 那么
1. int[],string[],float[],double[],Person[] 都是对应Array 吗?是编译器的魔力吗?
2. 那T[],这个泛型的东西呢?
var type = new int[0].GetType();
System.Console.WriteLine($"result: {type.FullName}");
//return ,很遗憾找不到这个神奇的类,string[],Person[]也是类似
result: System.Int32[]
1.数组是数据结构,数组有类型.所有的数组都继承子array
2.泛型是不存在的
恭喜你回答正确了继承自Array
Array`1
typeof(T[])
new A<string>().GetArray();
new A<int>().GetArray();
public class A<T>
{
public T[] GetArray()
{
T[] arr = new T[20];
System.Console.WriteLine(typeof(T[]));
System.Console.WriteLine(arr.GetType());
return arr;
}
}
不知道你怎么得到这个结论的,我觉得T[]就是编译器的语法糖,和default(T) 类似的东西,由编译器根据你传入的参数自动帮你在jit阶段生成native code 。
但是数组那个我真的不能确定int[] 就是继承自 Array 这个abstract class,因为无论是反编译还是vs的对象浏览器都找不到Array的派生类,但是如果没有派生的话,微软定义一个abstract 好看吗?