c# - 类对象数组的构造函数

标签 c# arrays constructor

在 C# 中,您可以键入:

int[] ia = new int[] { 1, 2, 3, 4 };

它会初始化一个长度为 4 的整数数组,其中包含这些数字。

我有一张卡片类,代表一副卡片中的一张卡片,我希望能够说出如下内容:

Card[] ca = new Card[] { "4S", "5C", "AH" };

还有一系列的牌,第一张牌是黑桃 4,然后是梅花 5,然后是红桃 A。

我已经可以做到:

Card c = new Card("4S");

并有一张代表黑桃 4 的牌。

这种构造函数类型甚至可能吗?如果可能,我将如何创建它?


PS:我知道我可以去:

Card[] ca = Cards.Parse("4S 5C AH");

或者类似的蹩脚的东西,但我希望我能避免这种情况,并使用更漂亮的语法。

现在我已经把这些都打出来了,我觉得有点不好意思。我现在是“那个人”……#Guilty

最佳答案

通常的方式:

var ca = new Card[] { new Card( "4S" ), new Card( "5C" ), new Card( "AH" ) };

显式转换:

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

var ca = new Card[] { (Card)"4S", (Card)"5C", (Card)"AH" };

隐式转换:

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

var ca = new Card[] { "4S", "5C", "AH" };

现在,这是否美好取决于您的决定。我还会考虑卡片类是否应该使用字符串。枚举可能更好,并且可能会节省一些验证和解析。

关于c# - 类对象数组的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745978/

相关文章:

c# - 使用私有(private)自定义字段 (_customfieldname) 创建 WordPress 帖子不起作用

c++ - 为什么在这种情况下成员变量改变了,而对象的地址却保持不变?

javascript - 为什么在继承过程中需要重置 javascript 构造函数?

c++ - 如何使用非平凡构造函数构造静态 thread_local 成员

java - 是否有将 C# 代码转换为 Java 代码的有效工具?

c# - 暂停时静音

c# - 处理数据库中的空值

c# - 多维数组 [][] 与 [,]

ios - ScrollView 仅显示 1 张图像

java - 输出 ArrayList 到 String 不出现 [,](括号)