我对实例类中的静态构造函数感到困惑。
由于静态构造函数默认是私有的,我们不能对它们使用访问修饰符,那么在实例类中是否存在静态构造函数的默认构造函数?
如果是,那么为什么?因为我们已经定义了一个构造函数(private static和parameter less),并且根据C#概念,如果我们提供构造函数,那么默认构造函数就不存在了。 (我可能在这里错了)
如果否,则为什么我们能够使用静态构造函数创建实例类的对象。
以下示例已成功完成并执行:
public class OOPS
{
static int i = 0;
static OOPS(){
Console.WriteLine("Static Constructor ");
}
//OOPS() {
// Console.WriteLine("Instance Constructor");
//}
public static void ShowStaticMethod() {
Console.WriteLine("Static Method ");
}
public void ShowInstanceMethod()
{
Console.WriteLine("instance Method");
}
}
class Client
{
public void ClientMethod() {
OOPS o = new OOPS();
o.ShowInstanceMethod();
OOPS.ShowStaticMethod();
Console.WriteLine("Client completed");
Console.ReadLine();
}
}
答案 0 :(得分:0)
如果我们提供构造函数,那么默认构造函数不会存在。 (我可能在这里错了)
你错了一件事,上面的陈述对于实例构造函数是正确的,而不是静态构造函数。
10.11.4默认构造函数
如果一个类包含 no instance constructor 声明,则a 默认实例构造函数是自动提供的。
因此,当您提供静态构造函数时,它与默认实例构造函数没有任何关系,那就是您稍后在代码中使用的那个。
答案 1 :(得分:0)
静态构造函数不会影响实例构造函数。如果您不希望实例化该类,请将该类标记为static
。
public static class OOPS
{
static OOPS()
{
}
}