1

关于接口,我遇到了以下代码示例。为什么这个类在 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.");
    }
}  
4

2 回答 2

2

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

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

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

将调用两个方法的方法命名为“Main”似乎不是一个好的名称选择。

编辑回答评论

为了完全理解单例模式,我强烈建议您阅读本文

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

于 2013-02-15T12:02:56.537 回答
1

可能是来自教程。

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

因此,当您使用该类运行程序时,它将测试这两种方法。
该类在 main 方法中创建其自身的实例,因为它自身不是静态类。

如果像通常情况下那样有一个program带有该方法的单独类,那就不会那么混乱了。static main

于 2013-02-15T12:00:11.860 回答