我正在尝试在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> { }
-但是如何定义该类的常量?
提前致谢。
最佳答案
您可以尝试以下方法:
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#编译器要求方法的默认参数是编译时默认的,因此您不能将ColorSet的任何静态实例用作方法的默认参数。相反,假定null为默认参数,在这种情况下,请使用方法主体中需要的预定义颜色集。
关于c# - 与C#通用HashSet声明作斗争,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25992447/