簡體   English   中英

c#中的元組定義

[英]Tuple definition in c#

我正在嘗試定義一個類型為Tuple <int, Tuple <int, int>> 我有一個名為Tile的類,我在其中定義了一些這樣的參數:

public class Tile
{
    public readonly int producerId;
    public readonly int level;
    public class Id : Tuple<int, Tuple<int, int>>
    {
    }
    public class TId : Tuple<int, Tuple<int, int>>
    {
    }
}

問題是VS告訴我這個TIdId

沒有給出的參數對應於' Tuple< int, Tuple< int, int>>.Tuple(int, Tuple<int, int>)所需的形式參數'item1'.Tuple Tuple< int, Tuple< int, int>>.Tuple(int, Tuple<int, int>) '。

我不完全明白這里發生了什么。 我是否必須以不同的方式定義此類型? 謝謝您的幫助!

您的代碼會立即變得混亂,看起來像一團糟。 您最好在類IdTId定義屬性,而不是繼承自元組...

如果你真的想采用元組方式,你需要提供參數來初始化你的數據:

public class Tile
{
    public readonly int producerId;
    public readonly int level;
    public class Id : Tuple<int, Tuple<int, int>>
    {
        public Id(int value1, int subvalue1, int subvalue2)
            : base(value1, new Tuple<int, int>(subvalue1, subvalue2))
        {
        }
    }
    public class TId : Tuple<int, Tuple<int, int>>
    {
        public TId(int value1, int subvalue1, int subvalue2)
            : base(value1, new Tuple<int, int>(subvalue1, subvalue2))
        {
        }
    }
}

您的類繼承自沒有無參數構造函數的類:

public class Id : Tuple<int, Tuple<int, int>>
{
}

但是您沒有為繼承的類定義構造函數。 編譯器錯誤告訴您默認的無參數構造函數沒有向基類的構造函數提供必要的參數。

使用這些參數定義構造函數:

public class Id : Tuple<int, Tuple<int, int>>
{
    public Id(int first, Tuple<int, int> second) : base(first, second) { }
}

或者,如果您想要無參數的,請定義默認參數:

public class Id : Tuple<int, Tuple<int, int>>
{
    public Id() : base(0, new Tuple<int, int>(0, 0)) { }
}

據我了解你的問題,你不希望將IdTId作為內部類,而是作為一個字段。

public class Tile
{
    public readonly int producerId;
    public readonly int level;
    public Tuple<int, Tuple<int, int>> Id;
    public Tuple<int, Tuple<int, int>> TId;
}

另請注意,您在問題中使用了混合詞匯。 請查看此MSDN條目,解釋不同的班級成員。

如果您希望將成員作為參數而不是字段 ,則會顯示以下內容:

public class Tile
{
    public readonly int ProducerId { get; set; }
    public readonly int Level { get; set; }
    public Tuple<int, Tuple<int, int>> Id { get; set; }
    public Tuple<int, Tuple<int, int>> TId { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM