【问题标题】:What's the naming rules for Class itself?Class 本身的命名规则是什么?
【发布时间】:2015-12-29 04:56:19
【问题描述】:

例如; “控制台类” “Acme.Collections.Stack 类”

有人说,准确的术语应该是“类”。 当然,可以使用“类型”这个词,因为它是一个通用术语。

在我看来,“类”是不正确的。 "class" 应该只用于 user_defined 类型。 Consle、Stack 不是自定义的,所以应该是“类型”。

MSDN 是这样说的; 类是一种构造,使您能够通过将其他类型、方法和事件的变量组合在一起来创建自己的自定义类型。

有什么好的建议吗?

【问题讨论】:

  • 您建议将框架类称为什么?类型更通用,可以是类、接口等。
  • 一个class 是一个特定的typeType 是通用术语,class 是特定术语。
  • 如果它在定义的第一行说“类”,那么它就是一个类。
  • Arghya C;;这是正确的。我们已经有 BCL/FCL 等。我不知道。
  • @Jason 你可以用@username 标记人。仅供参考。

标签: c# class types


【解决方案1】:

我不确定你到底在问什么,但我认为你有点混淆了这些术语,所以让我澄清一下。

类型
在 c# 中,types 是包含逻辑(方法)和数据(成员、属性和变量)的构造。不同类型之间有几个区别:

和:

请注意,在大多数情况下,这两个区别是完全不相关的。有内置的引用类型,您可以定义自定义值类型。内置类型的事实意味着它在.net clr 内部实现,这意味着即使使用反射器(请参阅MethodImpl 属性),您也看不到它们的实现。内置类型代表所有其他类型的构建块。该语言中的其他所有内容以某种形式是它们的组合。


Class 是一个类型修饰符,意味着这个类型是通过引用传递的。当您将类类型作为参数发送给方法时,该方法会接收它,并且所有更改都针对该类型的同一实例(除非您更改引用)。此外,类可以接受 null 作为它们的值。

STRUCT
当一个类型被定义为一个结构时,这意味着它被视为一个值类型。当您将它作为参数传递给方法时,该方法将获得实例的副本,并且所有更改将仅应用于副本,而不应用于原始实例。结构不能接受 null(参见 Nullable 类)。

因此,您可以在大多数情况下互换使用术语 typeclass。尤其是在谈论 .net 框架中的类时。唯一唯一的类型是内置类型。您可以做出的唯一真正区别是它们与其他类型之间的区别。 Int 和 List 根本不同,因为 int 是在 .net clr 中实现的,而 List 是在 framework 中使用 clr 实现的。 List 和您创建的自定义类型非常相似,将一个称为 type 而另一个称为 class 完全没有意义。

【讨论】:

  • 哇。太棒了。我没有明确理解的确切点是“自定义”一词。我一直认为我是唯一的客户(呃)制造商。但是,我很累,一切都是习俗。 Hejlsberg 先生(我昨天早上问了他这个问题,得到了相同的答案),MS 家伙等可以/应该是定制的。现在一切都清楚了。再次感谢。
【解决方案2】:

正如 MSDN 所说,class 是一个特定的引用 type,它允许您将变量组合在一起。

type 是一个更通用的术语,用于描述 class 和其他类似的结构

  • struct
  • enum
  • delegate
  • Generic Type
  • interfaces
  • Etc...

正如您在System.Type class 中看到的,它包含有关type 的数据,它支持除上述类之外的许多其他types:

尽管 MSDN 说:

您自己的自定义类型

.NET classes 也属于该定义,因为它们是“.NET 自己的自定义类型”

classtype 的定义已经很好地定义了,您不应该尝试自己定义它们。

【讨论】:

  • @TimSchmelter 谢谢,已修复
  • +1 for 类和类型的定义已经很好地定义了,你不应该尝试自己定义它们。
  • 他们使用“自定义”的最广泛含义。我现在很清楚。多谢。以上是非常好的解释。我引导了很多很多当地白痴(包括我所在地区最畅销的 C# 书籍作者)的错误方式(方式错误)。
【解决方案3】:

你错过了重点。文档说您可以使用 class 关键字定义自定义类型。这并不意味着只有您可以创建此类类型。 Framework 有一组由像您这样的程序员编写的库,用于创建“他们的”自定义类型以简化您的开发。简而言之,框架类型也是用户定义的类型。

C# 基本上有类型——有些是class,有些是struct,有些是interface,有些是enum,有些是delegate,有些是[](数组)。顺便说一句,其中一些类型在内部只是类。

【讨论】:

  • “框架类型也是用户定义的类型”--> 这对我来说是个大人物。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
相关资源
最近更新 更多