【发布时间】:2023-03-14 14:13:01
【问题描述】:
我可以想象当你看到我的问题标题时的第一反应:“你怎么能在这里有这么高的声誉,却忽略了一个类是什么?”
我的观点如下:直到现在,我一直在使用 C++、Delphi、Java,... 这很简单:类是对象的类型定义。您需要在内存中保留一些空间才能开始使用它(因此是构造函数),然后不要忘记释放该内存(如果您的编程语言不支持垃圾回收)。
然而,今天我遇到了一个关于 C# 中类型定义和常量的问题,然后我想到了this URL,提到了这样的源代码:
class Calendar1
{
public const int Months = 12;
}
为了使用它,你只需要这样做:
using Calendar1;
您可以使用Months 作为常量。
但这是我的问题:构造函数在哪里?如果这个类是一个对象的类型定义,那我们说的是哪个对象呢?
所以,如果我理解正确的话,C# 是基于“一切都是类”的思想,但是为了使这个工作,C# 的发明者扩展了类的定义,所以现在我们得到(C# 定义) :
类是以下之一:
- 对象的类型定义。在这种情况下,需要一个构造函数来创建对象。
- ...
有人可以完成定义吗?
【问题讨论】:
-
我怀疑你的意思是
using static Calendar1;否则它不会编译。编译器提供了一个构造函数,但您不需要它,因为所有常量都是静态的——您不需要Calendar1的实例来访问Months。const隐含的静态特性是否让您感到困惑? -
也许this 可以帮忙?
-
如果类是静态类,你只能做
using static Calendar1。在 Entity Framework 中为 dtos 和实体工作时,他所做的很好并且很常见。 -
"A class is a data structure that may contain data members (constants and fields), function members (methods, properties, events, indexers, operators, instance constructors, destructors and static constructors), and nested types."- 来自the C# standard。 (我要补充一点:成员可能是静态的或非静态的。)
标签: c# programming-languages theory