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

本文关键字:实例化 自己的 对象 为什么 | 更新日期: 2023-09-27 17:59:44

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

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

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

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

如果尝试使用singleton,则主方法应替换为静态构造函数,并由私有InterfaceImplementer变量支持

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

编辑以回答评论

为了完全理解singleton模式,我强烈建议阅读此

名为"Main"的方法不能帮助调用方理解该方法正在执行的操作。我会选择"运行"、"初始化"、"调用"。

很可能来自教程。

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

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

如果像通常的情况一样,有一个单独的program类和static main方法,那么就不会那么令人困惑了。