在我的一次采访中,有人问我static修饰符是什么意思。我的回答是告诉面试官静态类的对象不能被创建,以及其他有用的观点。
但面试官问,创建这样一个对象不能被创建的类有什么用。基本上,他们问的是为什么首先需要static?
我真的不确定该如何回答这个问题。我该说些什么呢?
发布于 2011-04-27 19:56:27
面试官可能希望你讨论面向对象的设计和模式,而不是他们想让你背诵特定修饰符的定义。这里真的没有正确的答案。纯粹主义者可能会争辩说,static是一个可恶的东西。实用主义者可能会争辩说,它填补了“一切都是对象”抽象中的漏洞,允许您调用实用程序方法,对于这些方法来说,仅仅为了调用它们而实例化一个新对象是没有意义的。最典型的例子就是System.Math class。
大多数程序员遵循的一般经验法则是,如果您正在操作的数据与对象的任何特定实例没有关联,那么将该字段/方法标记为静态可能是有意义的。否则,它可能应该是对象实例的常规成员。
MSDN documentation已经有了一个很好的解释:
使用
static修饰符来声明静态成员,该成员属于类型本身而不是特定对象。static修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、析构函数或类以外的类型一起使用。有关详细信息,请参阅Static Classes and Static Class Members (C# Programming Guide)。
static修饰符在C#中还有更具体的用法,比如定义扩展方法(只能在静态类中定义)、定义互操作方法等。还值得注意的是,所有静态类在C#中都是sealed,因为如果没有构造函数,就不能继承它们。
发布于 2011-04-27 19:39:54
静态不只适用于类,成员也可以是静态的。使用静态的原因是为了提供实用程序类型的功能,而实例化一个对象来使用它是没有意义的。例如,为什么要创建一个int来使用int.Parse()
发布于 2011-04-27 20:01:06
您可以查看与对象/类的状态相关的“静态”。
当您的类不需要维护单个对象的静态状态信息,而是维护类的状态信息时,可以使用静态静态。静态变量就是一个例子。
其他人已经举出了一些有用的例子,我不再重复。
https://stackoverflow.com/questions/5803407
复制相似问题