C# 类默认方法

发布于 2024-12-12 07:08:01 字数 685 浏览 1 评论 0原文

有没有办法为这样的类分配默认方法:

public class EscMenu
{
    public static void EscMenu()
    {
        //do something
    }

   public static void SomeOtherMethod()
   {
       //do something else
   }
}

因此,当我在同一解决方案的另一个类中调用 EscMenu.SomeOtherMethod(); 时,它确实“做其他事情”,但我无法调用 EscMenu();

我怎样才能做到这一点?

谢谢!

编辑:

好的,我会尝试以更好的方式解释这一点:

我只是希望类 EscMenu 当我从另一个(外部)类调用它时执行某些操作,如下所示:EscMenu() ;。当然,我可以轻松地在 EscMenu 中创建一个方法 default() 并在外部调用 EscMenu.default(); 。但我真的很想调用 EscMenu();

如果这是不可能的,或者我仍然无法解释自己,那么请不要介意;-)

再次感谢!

Is there a way to assign a default method to a class like this:

public class EscMenu
{
    public static void EscMenu()
    {
        //do something
    }

   public static void SomeOtherMethod()
   {
       //do something else
   }
}

So when I call EscMenu.SomeOtherMethod(); in another class in the same solution, it does "do something else", but I cannot call EscMenu();.

How can I do that?

Thanks!

EDIT:

Okay, Im gonna try to explain this in a better way:

I just want the class EscMenu to do something when I call it from another (external) class like this: EscMenu();. Of course I could easily create a method default() in EscMenu and call EscMenu.default(); externally. But I would really like to just call EscMenu();

If that just isn't possible or I continue to fail in explaining myself, then just don't mind ;-)

Thanks again!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

狂之美人 2024-12-19 07:08:01

不,您不能为方法指定与其包含类型相同的名称 - 而且您确实不想将类型名称与方法名称混淆。为什么要引入歧义?

如果您可以举一些示例,说明您希望以现有方式以外的方式编写代码,我们也许可以为您提供更多帮助。 (例如,扩展方法可能可能会有所帮助。)

No, you can't give a method the same name as its containing type - and you really don't want to confuse the name of a type with the name of a method anyway. Why introduce the ambiguity?

If you could give some example where you want to write code in some way other than what's already available, we may be able to help you more. (For example, it may be that extension methods could help.)

拍不死你 2024-12-19 07:08:01

“默认”方法的概念在 C# 中是一种荒谬,但从我从您的要求中收集到的信息来看,您不希望能够在外部调用 EscMenu (即在class),因此为此请使用 private 访问修饰符:

private static void EscMenu(){
    //do something
}

但是您需要为该成员提供一个不同的名称。

The concept of a "default" method is a kind of absurdity in C#, but from what I can glean from your requirements, you don't want to be able to call EscMenu externally (i.e outside of the class), so for that use the private access modifier:

private static void EscMenu(){
    //do something
}

But you would need a distinct name for the member.

暗藏城府 2024-12-19 07:08:01

我不知道你的默认方法是什么意思。但为了防止其他类调用您的 ExcMenu 类中的方法,您可以将您的方法设为私有:

public class EscMenu
{
    private static void EscMenu()
    {
       //do something
    }

    public static void SomeOtherMethod()
    {
        //do something else
    }
}

I don't knwo what you mean with default method. But to prevent other classes to call methods in your class ExcMenu, you can make your method private:

public class EscMenu
{
    private static void EscMenu()
    {
       //do something
    }

    public static void SomeOtherMethod()
    {
        //do something else
    }
}
多像笑话 2024-12-19 07:08:01

你所拥有的(如果你清理了语法)是 静态构造函数

  • 静态构造函数不采用访问修饰符或参数。
  • 在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。
  • 静态构造函数不能直接调用。
  • 用户无法控制静态构造函数何时在程序中执行。

What you have there (if you cleaned up the syntax) is a static constructor.

  • A static constructor does not take access modifiers or have parameters.
  • A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.
  • A static constructor cannot be called directly.
  • The user has no control on when the static constructor is executed in the program.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文