在C#中将项添加到元组

时间:2017-03-14 12:02:49

标签: c# tuples

我有一个元组数组,如下所示;

var games = new Tuple <string, Nullable<double>>[] 
                  { new Tuple<string, Nullable<double>>("Fallout 3:    $", 13.95),
                    new Tuple<string, Nullable<double>>("GTA V:    $", 45.95),
                    new Tuple<string, Nullable<double>>("Rocket League:    $", 19.95) };

我想知道是否有一个功能会让我在这个列表中添加另一个项目。

请帮忙!

谢谢,肖恩

4 个答案:

答案 0 :(得分:13)

使用列表

select a.instalmentnbr, a.duedate, sum(a.capital_payment), sum(a.interest_payment), sum(a.overdue_payment)
from helltable a
where a.request_orig_id = 46  order by a.instalmentnbr;

答案 1 :(得分:1)

使用Resize方法:

Array.Resize(ref games, games.Length + 1);
games[games.Length - 1] =  new Tuple<string, Nullable<double>>("Star Flare: $", 5.00),;

答案 2 :(得分:1)

虽然其他答案已涵盖您应该做的事情,即使用List(代码来自this answer):

var games = new List<Tuple<string, Nullable<double>>>()
{
    new Tuple<string, Nullable<double>>("Fallout 3:    $", 13.95),
    new Tuple<string, Nullable<double>>("GTA V:    $", 45.95),
    new Tuple<string, Nullable<double>>("Rocket League:    $", 19.95)
};

然后你可以调用Add方法:

games.Add(new Tuple<string, double?>("Skyrim:    $", 15.10));

我想指出一些可以改进代码的方法。

  1. string中的Tuple应该只是游戏名称,您以后可以随时对其进行格式化:

    string formattedGame = $"{game.Item1}:    ${game.Item2}";
    
  2. 似乎没有太多需要使用Nullable<double>(也可以写成double? BTW),考虑只使用double

  3. 在处理货币价值时,建议使用decimal,因此请考虑转换为货币价值。
  4. 考虑使用自定义类,即Game。这将简化代码,并在您希望添加更多详细信息时提供帮助,例如DescriptionGenreAgeRating等。
  5. 有关何时使用数组或列表的更多详细信息,请参阅this question,但是,简短版本应该是您应该使用列表。

答案 3 :(得分:0)

class Program
{
    static void Main(string[] args)
    {
        var games = new Tuple<string, Nullable<double>>[] 
              { new Tuple<string, Nullable<double>>("Fallout 3:    $", 13.95),
                new Tuple<string, Nullable<double>>("GTA V:    $", 45.95),
                new Tuple<string, Nullable<double>>("Rocket League:    $", 19.95) };

        Array.Resize(ref games, 4);
        games[3] = new Tuple<string,double?>("Test", 19.95);
    }
}