首页 新闻 会员 周边

T[]这个东西有对应的类吗

0
[已解决问题] 解决于 2017-07-05 12:15

应该说.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[]
给我一个理由的主页 给我一个理由 | 初学一级 | 园豆:17
提问于:2017-07-05 08:29
< >
分享
最佳答案
1

1.数组是数据结构,数组有类型.所有的数组都继承子array

2.泛型是不存在的

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2017-07-05 09:57

恭喜你回答正确了继承自Array

给我一个理由 | 园豆:17 (初学一级) | 2017-07-05 12:15
其他回答(1)
0
Array`1

typeof(T[])

慧☆星 | 园豆:5640 (大侠五级) | 2017-07-05 09:09

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 好看吗?

vs查看Array派生类没有

支持(0) 反对(0) 给我一个理由 | 园豆:17 (初学一级) | 2017-07-05 12:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册