xor*_*wer 14 c# oop static static-methods design-patterns
在我的一次采访中,我被问到static修饰符的含义.我回答告诉采访者无法创建静态类的对象和其他有用的点.
但是访问者询问创建这样一个无法创建对象的类的用途是什么.基本上,他们首先要问为什么static需要?
我真的不确定如何回答这个问题.我该说什么?
Cod*_*ray 19
面试官可能希望您讨论面向对象的设计和模式,而不是他们希望您背诵该特定修饰符的定义.这里真的没有正确的答案.纯粹主义者可能会认为这static是令人厌恶的.实用主义者可能会争辩说,它填补了"一切都是对象"抽象中的一个漏洞,允许您调用实用程序方法,实例化一个新对象只是为了调用它们是没有意义的.这个典型的例子是System.Math班级.
大多数程序员遵循的一般经验法则是,如果您正在操作的数据与对象的任何特定实例无关,那么将该字段/方法标记为静态可能是有意义的.否则,它应该是对象实例的常规成员.
在MSDN文档有着相当不错的解释已经:
使用
static修饰符声明静态成员,该成员属于类型本身而不是特定对象.static修饰符可以与类,字段,方法,属性,运算符,事件和构造函数一起使用,但不能与索引器,析构函数或类以外的类型一起使用.有关更多信息,请参见静态类和静态类成员(C#编程指南).
所述static改性剂还具有在C#更具体的用途,如定义扩展方法(它只能内部静态类的定义),定义互操作的方法等,这也是值得注意的是所有的静态类是sealed在C#,因为没有一个构造,他们不能继承.