参考接口,我遇到了以下代码示例。为什么这个类在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.");
}
}
答案 0 :(得分:2)
方法'main'是静态的,因此它不引用任何InterfaceImplementer实例。要调用实例方法,需要创建一个实例。
据我所知,名为'main'的静态方法不是任何已知的约定。
如果这是尝试使用单例,则main方法应该用静态构造函数替换,并由私有InterfaceImplementer变量支持
命名一个方法“Main”,它将调用两个方法似乎不是一个好名字选择。
编辑回复评论
要完全理解单身模式,我强烈建议您阅读this
名为“Main”的方法无法帮助调用者理解该方法正在做什么。我会选择“运行”,“初始化”,“调用”。
答案 1 :(得分:1)
可能来自教程。
代码作为控制台应用程序运行,该应用程序必须具有静态Main
方法,这是程序执行开始的地方。
因此,当您使用该类运行程序时,它将测试2种方法 该类在main方法中创建了一个self实例,因为它不是一个静态类。它是自己的。
如果通常情况下使用program
方法有一个单独的static main
类,那就不那么容易混淆了。