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

时间:2014-08-14 20:35:57

标签: c# c++ enums difference

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

  1. C#中是否有解决方法?我能以某种方式实现同​​样的目标吗?我知道我可以使类非静态,使构造函数成为私有,然后使用值和静态方法Quit将静态实例放在ExitCodes上,但这样做太多了。

  2. 我希望能够像C ++一样制作自定义类型。例如,在C ++中我可以这样做:

    using exit_code_t = int;
    
  3. 我怀疑它在C#中是否可行,但为什么不在这里问。

1 个答案:

答案 0 :(得分:2)

  

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完全相同,但它与您将获得的一样接近。