我试图在C#中声明这样的内容(注意这是不正确的C#语法):
enum Color { Red, Yellow, Green, Blue }
type ColorSet HashSet<Color>; // #1
void setColors (ColorSet colors = { Red, Green }) // #2
{ ... }
那么 - 如何为HashSet声明同义词类型,以及如何定义要使用的类型的常量,例如作为函数参数的默认值?
对于#1,可能的方法是一个空的包装类:
class ColorSet : HashSet<Color> { }
- 但是如何定义该类的常量?
提前致谢。
答案 0 :(得分:2)
如何为HashSet声明同义词类型,
你不能;在C#中没有这样的东西。有一个using
别名,但这是每个文件。
如何定义要使用的那种类型的常量,例如作为函数参数的默认值?
你不能:一个类不能是常量(string
个文字除外)。
答案 1 :(得分:2)
您可以尝试这种方法:
public enum Color { Red, Yellow, Green, Blue }
public class ColorSet : HashSet<Color> {}
private void setColors(ColorSet colors = null)
{
if (colors == null)
colors = new ColorSet {Color.Red, Color.Green};
....
}
请注意,C#编译器要求方法的默认参数为comile-time defiite,因此您不能将ColorSet的任何静态实例用作方法的默认参数。相反,假设null是默认参数,在这种情况下,使用方法体中需要的预定义colorset。
答案 2 :(得分:2)
您无法直接为方法设置引用类型的(非空)默认值,但您可以创建两个相似的方法:
enum Color { Red, Yellow, Green, Blue }
class ColorSet : HashSet<Color> { }
void setColors(ColorSet colors)
{
...
}
void setColors()
{
setColors(new ColorSet { Color.Red, Color.Green });
}