类对象数组的构造方法

tur*_*yag 2 c# arrays constructor

在C#中,您可以输入:

int[] ia = new int[] { 1, 2, 3, 4 };
Run Code Online (Sandbox Code Playgroud)

它将初始化一个包含这些数字的长度为4的整数数组.

我有一张卡片,代表卡片中的卡片,我希望能够说出类似的话:

Card[] ca = new Card[] { "4S", "5C", "AH" };
Run Code Online (Sandbox Code Playgroud)

并且有一系列卡片,第一张卡片是黑桃4,然后是俱乐部中的5张,然后是心灵王牌.

我已经可以做了:

Card c = new Card("4S");
Run Code Online (Sandbox Code Playgroud)

并有一张卡代表黑桃4.

这种构造函数类型是否可行?如果可能的话,我将如何创建它?


PS:我知道我可以去:

Card[] ca = Cards.Parse("4S 5C AH");
Run Code Online (Sandbox Code Playgroud)

或者像这样的蹩脚,但我希望我可以避免这种情况,并使用更漂亮的语法.

既然我把这一切都输了出来,我觉得有点羞怯.我现在是"那个人"...... #Guilty

Chr*_*ris 6

通常的方式:

var ca = new Card[] { new Card( "4S" ), new Card( "5C" ), new Card( "AH" ) };
Run Code Online (Sandbox Code Playgroud)

明确的演员:

class Card
{
    ...
    public static explicit operator Card( string s )
    {
        return new Card( s );
    }
    ...
}

var ca = new Card[] { (Card)"4S", (Card)"5C", (Card)"AH" };
Run Code Online (Sandbox Code Playgroud)

隐式演员:

class Card
{
    ...
    public static implicit operator Card( string s )
    {
        return new Card( s );
    }
    ...
}

var ca = new Card[] { "4S", "5C", "AH" };
Run Code Online (Sandbox Code Playgroud)

现在,这是否好看取决于你自己决定.我还会考虑卡类是否应该使用字符串.枚举可能更好,它可能会保存一些验证和解析.