为什么这个类在类本身中实例化它自己的对象?

时间:2013-02-15 11:58:07

标签: c# class interface instantiation

参考接口,我遇到了以下代码示例。为什么这个类在main方法中实例化它自己的对象?它是C#和Java中的有效理论或代码约定吗? (编译器没有抱怨..但我很好奇)

using System;

interface IParentInterface
{
    void ParentInterfaceMethod();
}

interface IMyInterface : IParentInterface
{
    void MethodToImplement();
}

class InterfaceImplementer : IMyInterface
{
    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer();
        iImp.MethodToImplement();
        iImp.ParentInterfaceMethod();
    }

    public void MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }

    public void ParentInterfaceMethod()
    {
        Console.WriteLine("ParentInterfaceMethod() called.");
    }
}  

2 个答案:

答案 0 :(得分:2)

方法'main'是静态的,因此它不引用任何InterfaceImplementer实例。要调用实例方法,需要创建一个实例。

据我所知,名为'main'的静态方法不是任何已知的约定。

如果这是尝试使用单例,则main方法应该用静态构造函数替换,并由私有InterfaceImplementer变量支持

命名一个方法“Main”,它将调用两个方法似乎不是一个好名字选择。

编辑回复评论

要完全理解单身模式,我强烈建议您阅读this

名为“Main”的方法无法帮助调用者理解该方法正在做什么。我会选择“运行”,“初始化”,“调用”。

答案 1 :(得分:1)

可能来自教程。

代码作为控制台应用程序运行,该应用程序必须具有静态Main方法,这是程序执行开始的地方。

因此,当您使用该类运行程序时,它将测试2种方法 该类在main方法中创建了一个self实例,因为它不是一个静态类。它是自己的。

如果通常情况下使用program方法有一个单独的static main类,那就不那么容易混淆了。