我正在尝试在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/

10-13 03:18