如何定义"类型"的含义

Fra*_*yce 5 .net c# clr types

摘自Eric Lippert关于"是"的含义的博客:

类型的一个常见概念是类型是值的集合,并且赋值兼容性仅仅是检查给定值是否是必要集合的成员.但在C#中并非如此.

他给出的反例是null is string返回false,但string b = nullC#编译器完全没问题.

也许这是一个愚蠢的问题,但是在C#.Net上下文中定义"类型"概念的更好方法是什么?它只是用来定义内存占用规则的一个词吗?......到CLR?我意识到这个定义有多松散(而且可怕的错误),但是我正在努力适应一个漂亮的包装并绕过类型的想法.

注意:越简单,但完全准确,越好.(强N型,这里).

Eri*_*ert 10

什么是在C#.Net上下文中定义"类型"概念的更好方法?它只是用来定义内存占用规则的一个词吗?我正在努力适应一个漂亮的包装,并围绕类型的想法鞠躬.

这是一个棘手的问题.你打开了我的文章的链接is,但我认为你真正想要阅读的是这一个:

http://blogs.msdn.com/b/ericlippert/archive/2011/08/29/what-is-this-thing-you-call-a-quot-type-quot-part-one.aspx

http://blogs.msdn.com/b/ericlippert/archive/2011/09/07/what-is-this-thing-you-call-a-quot-type-quot-part-two.aspx

简述:

从"数学"的角度来看,类型就像一个数字:我们可以使用规则操纵的抽象数量.比如"if Tis a type T[]is then type is type",依此类推.

一旦我们有一个抽象的类型概念,那么我们可以为每个表达式分配一个类型,然后我们可以创建一个自动确定程序是否遵循类型安全规则的验证程序.