如果未指定,C# 类是不是默认为实例类或静态类?

Posted

技术标签:

【中文标题】如果未指定,C# 类是不是默认为实例类或静态类?【英文标题】:Do C# classes default to instance or static classes if not specified?如果未指定,C# 类是否默认为实例类或静态类? 【发布时间】:2018-08-23 08:29:11 【问题描述】:

当在 C# 中声明一个类而不指定该类是静态类还是非静态类时,它将默认为哪个?

编辑:这是我根据这个讨论写的一篇文章。

https://hackernoon.com/c-static-vs-instance-classes-and-methods-50fe8987b231

【问题讨论】:

除非您使用static 关键字,否则您需要创建它的新实例。 没有办法指定一个类是“实例类”。 这应该需要不到一分钟的时间来测试。你的exampleClass 是静态的吗? 我不是在测试它,只是想了解一下理论概念。 @MBaka 为什么试图理解它会阻止你测试它?测试事物是理解事物的好方法 【参考方案1】:

如果您不将类声明为静态,则其成员可以是静态的或非静态的。 静态类只能有静态成员。 您只能在类的实例上调用非静态成员。 您只能在类本身上调用静态成员。

另外,在你的类声明中,没有括号。

【讨论】:

删除类声明 反应很好。超级有帮助。【参考方案2】:

如果未指定“静态”,则需要使用类的实例(除非成员本身指定为静态)。

如果类未声明为静态,客户端代码可以通过创建分配给变量的对象或实例来使用它。

发件人:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/classes

【讨论】:

不太正确,您不需要创建它的实例。例如,非静态类仍然只能包含静态成员。 反应很好。【参考方案3】:

除非您另有说明,否则类始终是实例类

【讨论】:

以上是关于如果未指定,C# 类是不是默认为实例类或静态类?的主要内容,如果未能解决你的问题,请参考以下文章

c# 有调用一个类的静态方法,是不是执行这个类的构造函数

C# 基础知识

关于类方法对象(实例):静态方法

静态和实例

在Python中,当作为类方法定义中的默认值传递时,赋值运算符是否会访问类或实例变量?

java成员变量默认赋值和初始化