如果一个类只包含静态方法,是否应该创建该类的对象以便使用该类的静态方法?
例如。如果类MyClass
只包含静态方法,那么首选哪一种?
MyClass.MyStaticMethod(3);
OR
MyClass mc = new MyClass();
mc.MyStaticMethod(3);
答案 0 :(得分:3)
如果它们是静态的,则不需要实例。你不能在C#中做到这一点(正确 - 你可以在Java中,我会建议这是令人困惑的。)
如果你可以实例化一个实例,我会倾向于那个解决方案。如果你需要增强你的方法来维持状态,那么你可以通过使这些方法保持静态而让自己感到悲伤。
答案 1 :(得分:2)
你无法调用这样的静态方法:
MyClass mc = new MyClass();
mc.MyStaticMethod(3);
它不会编译。你可以调用静态方法的唯一方法是在类实名称之前调用它们之前调用它们。
因此,您只能使用MyClass.MyStaticMethod(3);
答案 2 :(得分:1)
MyClass.MyStaticMethod(3); is preferred.
此外,您希望将类声明为静态,因此无法错误地实例化,并且预期用途是明确的
public static MyClass
{
public static Property {get;set;}
public static MyMethod() { .... }
}
答案 3 :(得分:1)
与其他人在答案中所说的相反:
您无法在类实例上调用静态方法。这将产生编译器错误。
这使得你的问题毫无意义,因为只有一个选项:
MyClass.MyStaticMethod(3);
答案 4 :(得分:0)
不,如果只使用实例变量或方法
,则不需要构造函数或创建实例答案 5 :(得分:0)
静态成员与类本身相关联不它的对象..
通过对象访问静态成员没有意义,因此错误 ..
您应该通过类本身访问静态成员
答案 6 :(得分:0)
恕我直言,
如果类有静态方法+实例方法,并且您认为只使用静态方法,我建议花时间重构代码,使用“Extract CLass”重构生成类并使其成为可能静态并使用此静态类,而不是使用实例方法将静态方法弄乱,如果静态方法的数量很大。
答案 7 :(得分:0)
如果一个类只包含静态方法,那么最好使类也是静态的。
答案 8 :(得分:0)
如果要在类中声明所有静态方法,则必须使用类名调用方法,即
MyClass.MyStaticMethod(3);
是的,您无法通过创建类的对象来调用静态方法
您无需创建该类的对象。如果你的类不包含静态方法,那么你应该将它创建为静态类。
对于非静态的其他变量或方法,您将需要类对象。