我们说我有一个名为ExitCodes
的枚举。我还想要一个名为ErrorCodes.Quit
的方法。在C ++中,您可以将方法放在命名空间下,而在C#中则不能。因此,您可以在C ++中的命名空间ExitCodes
下同时使用枚举和方法,但在C#中,您受限制。我想问两个关于这些差异的问题。
C#中是否有解决方法?我能以某种方式实现同样的目标吗?我知道我可以使类非静态,使构造函数成为私有,然后使用值和静态方法Quit将静态实例放在ExitCodes上,但这样做太多了。
我希望能够像C ++一样制作自定义类型。例如,在C ++中我可以这样做:
using exit_code_t = int;
我怀疑它在C#中是否可行,但为什么不在这里问。
答案 0 :(得分:2)
C#中是否有解决方法?
是的,将方法(以及Enum,如果需要)放在类而不是命名空间中。从语法上讲,它看起来是一样的:
public class ExitCodes
{
public enum ExitCodes
{
...
}
public static void Quit()
{
...
}
}
现在您可以使用ExitCodes.ExitCodes
和ExitCodes.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
完全相同,但它与您将获得的一样接近。