c# / c++ -命名空间下的方法
本文关键字:方法 命名空间 c++ | 更新日期: 2023-09-27 18:18:08
假设我有一个命名为ExitCodes
的enum。我还想要一个叫做ErrorCodes.Quit
的方法。在c++中,可以将方法放在命名空间下,而在c#中则不能。因此,在c++中,可以在命名空间ExitCodes
下同时拥有枚举和方法,但在c#中,您受到限制。关于这些差异,我想问两个问题。
-
在c#中有解决这个问题的方法吗?我能达到同样的效果吗?我知道我可以使类非静态,使构造函数私有,然后用值和静态方法Quit来破坏ExitCodes的静态实例,但这太费事了。
-
我希望能够使自定义类型,就像它是在c++。例如,在c++中我可以这样做:
using exit_code_t = int;
我怀疑这在c#中是可能的,但为什么不在这里问呢。
在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
不完全一样但是它和你能得到的最接近了