【发布时间】:2010-10-16 06:06:33
【问题描述】:
在C#中有什么区别:
public static class ClassName {}
还有:
public class ClassName {}
【问题讨论】:
标签: c# static-classes
在C#中有什么区别:
public static class ClassName {}
还有:
public class ClassName {}
【问题讨论】:
标签: c# static-classes
public static class ClassName {}
静态类就像一个全局变量:您可以在代码中的任何位置使用它而无需实例化它们。 例如:类名。在点运算符之后,您可以使用它的任何属性或函数。
public class ClassName {}
但是如果你有非静态类,那么你需要创建这个类的一个实例。 例如:
ClassName classNameObject = new ClassName();
【讨论】:
静态类不能被实例化,只能包含静态成员。因此,对静态类的调用如下:MyStaticClass.MyMethod(...) 或 MyStaticClass.MyConstant。
一个非静态类可以被实例化并且可以包含非静态成员(实例构造函数、析构函数、索引器)。非静态类的非静态成员只能通过对象调用:
MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);
【讨论】:
members 是指可以在类中声明/实例化的所有内容和任何内容(即嵌套类、字段、属性、de/constructors、方法)?它们全部必须声明为静态的?
c中的静态变量
类的局部变量作为自动变量 但是静态变量不会因为函数不再活动而消失。它们的值保持不变。如果控制权回来,静态变量具有相同的值
c 中的静态函数 其他文件中的函数不可见的函数。
*cpp 中的静态数据成员 * 数据成员可以是cpp中的变量或函数 static 适用于两个数据成员 类本身可以是静态的 “该类中的所有对象共享的静态数据成员只有一个副本” 静态数据成员只能访问静态数据成员
静态类 这个类不能实例化对象
【讨论】:
首先,对答案的评论询问“静态”是什么意思。在 C# 术语中,“静态”意味着“与类型本身有关,而不是与类型的实例有关”。您使用类型名称而不是引用或值来访问静态成员(来自其他类型)。例如:
// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();
现在,静态类...
静态类通常用作“实用程序”类。典型的例子可能是System.Math。创建一个数学实例是没有意义的——它只是“是”。一些规则(“可以”和“不能”):
object。您不能指定不同的基类型,也不能让静态类实现接口。abstract 修饰符。sealed 修饰符。【讨论】:
http://www.javaworld.com/javaworld/javaqa/1999-08/01-qa-static2.html - 非常好的文章。这是针对 Java 的。但我认为 C# 中的概念也应该相同。
【讨论】:
静态类只能包含静态成员。
可以在不先实例化类的情况下使用静态成员。
【讨论】:
静态类和成员用于创建无需创建类实例(使用new关键字,它们不能有构造函数)即可访问的数据和方法。
静态类可以在不依赖自身对象标识的情况下声明,因此静态类必须只包含静态成员。
当加载包含该类的程序或命名空间时,CLR 会加载这些类。
它们也是密封的,不能继承。
【讨论】:
静态类也不能被继承,而具有静态成员的非静态类可以被继承。
【讨论】:
您不能实例化(创建对象)静态类。它只能包含静态成员。
示例:System.Math
【讨论】:
静态类中的所有方法/属性必须是静态的,而“普通”类可以包含实例和静态方法的混合。
【讨论】: