关于泛型类型参数约束的一个问题

问题描述

约束的类型参数与类型本身没有关系,即在定义一个泛型结构体时,泛型类型一样可以被约束为引用类型。此时,结构体类型本身是值类型,而类型参数约束为引用类型,它可以为任何的接口、类、委托或数组。各位大神,上面这句话怎么理解。好绕口啊有木有,求解求解。。。。。。

解决方案

解决方案二:
我理解是,结构体是值类型,但是结构体里可以包含引用类型
解决方案三:
是不是这个意思比如publicclassgenericclass<T>whereT:class若类型参数T为结构体(结构体内包含类类型或其他引用类型),则此定义也是合理的?
解决方案四:
而此时参数类型结构体本身为值类型
解决方案五:
我能说这句话我也看不懂么

时间: 2024-10-29 19:25:32

关于泛型类型参数约束的一个问题的相关文章

[CLR via C#]12. 泛型

原文:[CLR via C#]12. 泛型 泛型(generic)是CLR和编程语言提供一种特殊机制,它支持另一种形式的代码重用,即"算法重用". 简单地说,开发人员先定义好一个算法,比如排序.搜索.交换等.但是定义算法的开发人员并不设定该算法要操作什么数据类型:该算法可广泛地应用于不同类型的对象.然后,另一个开发人员只要指定了算法要操作的具体数据类型,就可以使用这个现成的算法了. 泛型有两种表现形式:泛型类型和泛型方法. 泛型类型:大多数算法都封装在一个类型中,CLR允许创建泛型引用

[CLR via C#]13. 接口

原文:[CLR via C#]13. 接口 一.类和接口继承 在Microsoft.Net Framwork中,有一个名为System.Object的类,它定义了4个公共实例方法:ToString, Equals, GetHashCode和GetType.该类是其他所有类的根或者说最终基类.换言之,所有类都继承了Object的4个实例方法.这还意味着能操作Object类的实例的代码实际能操作任何类的实例. 在CLR中,任何类都肯定从一个类也只能从一个类(而且只能从Objetc派生的类)派生的.这

c#v2.0 扩展特性 翻译(2)

Generic type instantiations范型实例化 Similar to a non-generic type, the compiled representation of a generic type is intermediate language (IL) instructions and metadata. The representation of the generic type of course also encodes the existence and use

Bjarne Stroustrup对C++程序员的忠告

转自:http://blog.csdn.net/adm_qxx/archive/2007/05/20/1617488.aspx 第1章 致读者 [1] 在编写程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示.让程序的结构尽可能地直接反映这些思想: [a] 如果你能把"它"看成一个独立的概念,就把它做成一个类. [b] 如果你能把"它"看成一个独立地实体,就把它做成某个类的一个对象. [c] 如果两个类有共同的界面,将此界面做成一个抽象类. [d]

Java 泛型详解

在日常的开发中,我们会看到别人的框架很多地方会使用到泛型,泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.泛型的类型参数只能是类类型(包括自定义类),不能是简单类型.本篇博客我们就来详细解析一下泛型的知识. 泛型类定义及使用 使用泛型有什么好处呢?首先我们先看一个例子,假设我们有两个类,代码如下: #StringClass  public class Strin

【面试必备】Swift&amp;amp;nbsp;面试题及其答案

原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验.他开始编程的时候,内存单位还是 byte 而不是 gigabyte,存储空间还是可选的附加物,最常用的语言还是BASIC.现在,Antonio 的兴趣在于 iOS 应用开发.node.js 后端开发,而且他从来不会放过学习新东西的机会.他认为 Swift 是一门很有表现力的语言,不过 Objective-C 仍然是伟大而不同寻常的

泛型介绍(接上一篇,具体的事例随后呈上)

2.2接口约束为了规定某个数据类型必须实现某个接口,需要声明一个接口约束(interface constraint).有了这种约束之后,甚至不需要执行类型转换,就可以调用一个显示的接口成员实现.为了确保T类型参数都是先了IComparable接口,public class Binary<T> where T:System.IComparable{...}编译器会确保每次使用Binary类的时候,都必须指定一个实现了IComparable接口的类型参数.     2.3 struct/class

诊断Java代码: 轻松掌握Java泛型类型,第2部分

J2SE 1.5 ― 代号为"Tiger" ― 计划在 2003 年年底发布,它将包括泛型类型(如在 JSR-14 原型编译器中预先展示的那样,现在可下载获得).在 第 1 部分中,我们讨论了泛型类型的基础知识,以及为什么它们是对 Java 语言的一个重要且迫切需要的补充.我们还说明了为 Tiger 制定的泛型类型的实现怎么会包含数个"缺陷",这些缺陷限制了可以使用泛型类型的上下文. 为了帮助新程序员有效地使用泛型类型,我将详细说明到底泛型类型的哪些用法在 Tige

LINQ和泛型类型

LINQ 查询基于泛型类型,在 .NET Framework 的 2.0 版中引入了泛型类型.您无需深入了解泛型即可开始编写查询.但是,您可能需要了解两个基本概念: 当您创建泛型集合类(如 List<(Of <(T>)>))的实例时,您将"T"替换为列表将包含的对象的类型.例如,字符串列表表示为 List,Customer 对象列表表示为 List.泛型列表是强类型的,且提供了比将其元素存储为 Object 的集合更多的好处.如果您尝试将 Customer 添加