例如; "控制台课程" " Acme.Collections.Stack class"
有人说,确切的术语应该是" class"。 当然,术语"类型"可以使用,因为它是一个通用术语。
在我看来," class"是不正确的。 "类"应仅用于user_defined类型。 Consle,Stack不是自定义的,因此它应该是"类型"。
MSDN这样说; 类是一种构造,使您可以通过将其他类型,方法和事件的变量组合在一起来创建自己的自定义类型。
有什么好的建议吗?
答案 0 :(得分:8)
你错过了重点。文档说您可以使用class
关键字定义自定义类型。这并不仅仅意味着你可以创建这样的类型。 Framework有一组由像你这样的程序员编写的库,用于创建“他们的”自定义类型以简化开发。简而言之,框架类型也是用户定义的类型。
C#基本上有类型 - 有些是class
,有些是struct
,有些是interface
,有些是enum
,有些是delegate
,有些是[]
(数组)。在内部,其中一些类型只是btw类。
答案 1 :(得分:4)
正如MSDN所说,class
是一个特定的引用type
,它允许您将变量分组。
type
是一个更通用的术语,用于描述class
和其他结构,如
struct
enum
delegate
Generic Type
interfaces
Etc...
正如您在System.Type
class
中看到的,其中包含有关type
的数据,它支持除上述类之外的许多其他type
:
即使MSDN说:
您自己的自定义类型
.NET class
也属于该定义,因为它们是" .NET自己的自定义类型" 。
class
和type
的定义定义得非常好,您不应该尝试自己定义它们。
答案 2 :(得分:0)
我不确定你在这里问的确切是什么,但我认为你们对这些术语感到困惑,所以让我澄清一下。
<强> TYPE 强>
在c#types中是包含逻辑(方法)和数据(成员,属性和变量)的构造。不同类型之间有几个区别:
和
请注意,在大多数情况下,这两个区别完全不相关。有内置引用类型,您可以定义自定义值类型。构建类型的事实意味着它在.net clr内部实现,这意味着即使使用反射器也无法看到它们的实现(请参阅MethodImpl属性)。内置类型代表所有其他类型的构建块。语言中的其他所有内容都是它们的组合。
<强>类强>
Class是一个类型修饰符,意味着此类型通过引用传递。当您将类类型作为参数发送到方法时,该方法会接收它,并且所有更改都将对该类型的同一实例进行更改(除非您更改引用)。此外,课程可以接受null
作为其值。
<强> STRUCT 强>
当类型被定义为结构时,它意味着它被视为值类型。当您将其作为参数传递给方法时,该方法将获得实例的副本,并且所有更改仅应用于副本,而不应用于原始实例。结构不能接受null(参见Nullable类)。
因此,您可以在大多数情况下互换使用术语type
和class
。特别是在讨论.net框架中的类时。唯一独特的类型是内置类型。您可以做出的唯一真正区别是它们与其他类型之间的区别。 Int和List是根本不同的,因为int是在 .net clr 中实现的,而List是在框架中使用clr实现的。列表和您创建的自定义类型更相似,将其中一个称为type
而将另一个称为class
则完全没有意义。