c# / c++ -命名空间下的方法

本文关键字:方法 命名空间 c++ | 更新日期: 2023-09-27 18:18:08

假设我有一个命名为ExitCodes的enum。我还想要一个叫做ErrorCodes.Quit的方法。在c++中,可以将方法放在命名空间下,而在c#中则不能。因此,在c++中,可以在命名空间ExitCodes下同时拥有枚举和方法,但在c#中,您受到限制。关于这些差异,我想问两个问题。

  1. 在c#中有解决这个问题的方法吗?我能达到同样的效果吗?我知道我可以使类非静态,使构造函数私有,然后用值和静态方法Quit来破坏ExitCodes的静态实例,但这太费事了。

  2. 我希望能够使自定义类型,就像它是在c++。例如,在c++中我可以这样做:

    using exit_code_t = int;
    

我怀疑这在c#中是可能的,但为什么不在这里问呢。

c# / c++ -命名空间下的方法

在c#中有解决这个问题的方法吗?

是的,把方法(如果你愿意,还有Enum)放在一个类中,而不是一个命名空间中。语法上看起来是一样的:

public class ExitCodes
{
    public enum ExitCodes
    {  
        ...  
    }

    public static void Quit()
    {
       ...
    }
}

现在可以使用ExitCodes.ExitCodesExitCodes.Quit();

我想能够自定义类型,就像它在c++

在c++中只是给int类型一个别名。您可以在c#中做同样的事情,但您必须使用实际的类型名称,而不是int关键字:

using System;
using MyInt = System.Int32;
public class Test
{
    public static void Main()
    {
        // your code goes here
        Console.WriteLine(typeof(MyInt).ToString());  // will print System.Int32
    }
}
c#的一个不同之处在于别名只适用于当前文件。所以它的和c++的别名/typedef不完全一样但是它和你能得到的最接近了