首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“泛型”是什么意思?在.net中: x.GetType().IsGenericType

“泛型”是什么意思?在.net中: x.GetType().IsGenericType
EN

Stack Overflow用户
提问于 2016-02-15 08:24:56
回答 3查看 473关注 0票数 0

我已经找到了对java泛型类型的解释,但我确实理解到,Java.NET的泛型类型之间有很大的区别

我运行了以下命令,但我找不出它的真正含义。

代码语言:javascript
复制
   List<int> list = new List<int>();
   Console.WriteLine( list.GetType().IsGenericType);

MSDN链路简单地声明“获取一个值,指示当前类型是否是泛型类型”,但它没有说明泛型类型的含义。

泛型类型是否意味着它是从对象类继承的

泛型类型与抽象类有关吗?

.net泛型的定义是什么?我如何从我自己的逻辑来判断它是否是泛型类型(为了理解这个概念)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-15 21:12:00

首先回答你的两个问题:

  1. .NET中的所有类型、泛型类型和其他类型都来自Object
  2. 泛型类型可能和任何其他类型一样是抽象的,但不需要抽象。如果创建抽象泛型类型,则需要从它派生非抽象类型,以便能够从中实例化对象。

若要确定类型是否为泛型,只需查看类定义即可。Queue不是泛型类型,而Queue<T>是泛型类型,因为可以通过将泛型类型参数T替换为任何其他类型来获得不同的类型。例如,Queue<int>Queue<string>Queue<Object>等都使用在Queue<T>类中定义一次的相同代码。注意,它们本身也是泛型类型。此外,嵌套在泛型类型中的嵌套类型也被视为泛型类型。“基本类型”Queue<T>被称为泛型类型定义。

代码语言:javascript
复制
public abstract class MyListBase { }
public abstract class MyListBase<T> : MyListBase { }
public class MyList<T> : MyListBase<T>
{
    public class Nested { }
}
public class MyStringList : MyList<string> { }

..。

代码语言:javascript
复制
var isGenericType0 = typeof(MyListBase).IsGenericType; //False
var isGenericType1 = typeof(MyListBase<>).IsGenericType; //True
var isGenericType2 = typeof(MyListBase<>)
    .MakeGenericType(typeof(char)).IsGenericType; //True
var myIntegerList = new MyList<int>();
var isGenericType3 = myIntegerList.GetType().IsGenericType; //True
var myNested1 = new MyList<int>.Nested();
var isGenericType4 = myNested1.GetType().IsGenericType; //True
var myStringList = new MyStringList();
var isGenericType5 = myStringList.GetType().IsGenericType; //False

希望你现在能把你的头转到通用类型上。

票数 1
EN

Stack Overflow用户

发布于 2016-02-15 08:29:12

泛型允许您将方法、类、结构或接口裁剪成它所操作的精确数据类型。

泛型类型定义是用作模板的类、结构或接口声明,它可以包含或使用类型的占位符。例如,System.Collections.Generic.Dictionary类可以包含两种类型:键和值。因为泛型类型定义只是模板,所以不能创建作为泛型类型定义的类、结构或接口的实例。

代码语言:javascript
复制
public class Generic<T>
{
    public T Field;
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-15 08:44:55

在“答案”中很难描述.NET中的泛型。最好是阅读文档。

简而言之,它是С++中的模板,在Java、.NET、Delphi中是通用的。常见描述

编程

来自MSDN的文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35404512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档