一个关于泛型类的疑惑

Anéeka 2019-03-29 11:17:23
MSDN的定义:从反射的角度来看,通用类型和普通类型之间的区别是:一个通用类型存在着一个与之关联的类型(组成)的形参集(如果它是通用类型定义的话)或者 类型(组成)的实参集(如果它是构造类型的话)。 然后再看看VB对泛型类的语法声明 Public Class Generic(Of T) 这里的Of表达的是什么?是这种关联是从属关系,即Generic属于T这样吗?
...全文
173 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stherix 2019-03-29
  • 打赏
  • 举报
回复
引用 8 楼 qq_37551362 的回复:
这个冲突完全可以通过两个()来解决,如果真的没有从属关系就没必要加of,完全可以sub test(T)(String)。VB的数组也是()怎么不冲突?
实际就是这个of没有任何特殊含义,ms这么做的解释只有方便编译器而已
Anéeka 2019-03-29
  • 打赏
  • 举报
回复
引用 6 楼 stherix的回复:
[quote=引用 3 楼 qq_37551362 的回复:] [quote=引用 1 楼 stherix的回复:]msdn这翻译成中文后很难看懂了... Of是vb.net的语法 Public Class Generic(Of T)就相当于c#里面的 public class Generic<T> Of后面的标识符就是泛型参数
我当然知道of是VB的关键字。我之前以为加个of能够更好表现Generic与T的关系,毕竟basic设计初衷就是让人能够用自然语言的语法去理解代码。C#和basic的初衷不同,所以就没有用of T来表达Generic与T的关系。可没有从属关系的话微软为什么要设计of?直接Public Class Generic(T)不就行了?加了of反而把人的思路带偏,有违basic的初衷[/quote] 因为vb没有<>这种写法 Class Generic(T)可能会与其他用括号的语法相冲突,所以加了个of 给你个例子 sub test(Of T)(string) 泛型方法会有两个括号[/quote] 这个冲突完全可以通过两个()来解决,如果真的没有从属关系就没必要加of,完全可以sub test(T)(String)。VB的数组也是()怎么不冲突?
Anéeka 2019-03-29
  • 打赏
  • 举报
回复
引用 5 楼 exception92的回复:
[quote=引用 4 楼 qq_37551362 的回复:]
[quote=引用 2 楼 exception92的回复:]固定的声明形式吧,没有什么关系,泛型用来确保类型安全以及减少程序中的装箱拆箱操作,提供性能。

会不会是T换成一个普通类后Generic就有了这个普通类的属性?[/quote]
不是,T只是一种类型的约束,Generic是一种集合表示,只不过这个集合的类型由T来确定。 比如:T是个整型,不能说Generic就可以进行加减乘除。[/quote] 懂了。Generic(Of T)就是说明Generic的类型由T决定,Generic的类型属于T
stherix 2019-03-29
  • 打赏
  • 举报
回复
引用 3 楼 qq_37551362 的回复:
[quote=引用 1 楼 stherix的回复:]msdn这翻译成中文后很难看懂了... Of是vb.net的语法 Public Class Generic(Of T)就相当于c#里面的 public class Generic<T> Of后面的标识符就是泛型参数
我当然知道of是VB的关键字。我之前以为加个of能够更好表现Generic与T的关系,毕竟basic设计初衷就是让人能够用自然语言的语法去理解代码。C#和basic的初衷不同,所以就没有用of T来表达Generic与T的关系。可没有从属关系的话微软为什么要设计of?直接Public Class Generic(T)不就行了?加了of反而把人的思路带偏,有违basic的初衷[/quote] 因为vb没有<>这种写法 Class Generic(T)可能会与其他用括号的语法相冲突,所以加了个of 给你个例子 sub test(Of T)(string) 泛型方法会有两个括号
  • 打赏
  • 举报
回复
引用 4 楼 qq_37551362 的回复:
[quote=引用 2 楼 exception92的回复:]固定的声明形式吧,没有什么关系,泛型用来确保类型安全以及减少程序中的装箱拆箱操作,提供性能。

会不会是T换成一个普通类后Generic就有了这个普通类的属性?[/quote]
不是,T只是一种类型的约束,Generic是一种集合表示,只不过这个集合的类型由T来确定。 比如:T是个整型,不能说Generic就可以进行加减乘除。
Anéeka 2019-03-29
  • 打赏
  • 举报
回复
引用 2 楼 exception92的回复:
固定的声明形式吧,没有什么关系,泛型用来确保类型安全以及减少程序中的装箱拆箱操作,提供性能。
会不会是T换成一个普通类后Generic就有了这个普通类的属性?
Anéeka 2019-03-29
  • 打赏
  • 举报
回复
引用 1 楼 stherix的回复:
msdn这翻译成中文后很难看懂了... Of是vb.net的语法 Public Class Generic(Of T)就相当于c#里面的 public class Generic<T> Of后面的标识符就是泛型参数
我当然知道of是VB的关键字。我之前以为加个of能够更好表现Generic与T的关系,毕竟basic设计初衷就是让人能够用自然语言的语法去理解代码。C#和basic的初衷不同,所以就没有用of T来表达Generic与T的关系。可没有从属关系的话微软为什么要设计of?直接Public Class Generic(T)不就行了?加了of反而把人的思路带偏,有违basic的初衷
  • 打赏
  • 举报
回复
固定的声明形式吧,没有什么关系,泛型用来确保类型安全以及减少程序中的装箱拆箱操作,提供性能。
stherix 2019-03-29
  • 打赏
  • 举报
回复
msdn这翻译成中文后很难看懂了... Of是vb.net的语法 Public Class Generic(Of T)就相当于c#里面的 public class Generic<T> Of后面的标识符就是泛型参数

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧