-6

一旦我定义了 aList<string, string, string>现在我想再做一次,但我忘记了语法并丢失了我这样做的示例代码,但我肯定知道这是可能的。在我定义它之后,我以这种方式向列表中添加了一个新元素:ListXY.Add("string1", "string2", string3");. 我在互联网上的搜索并没有带来我需要的结果。我绝对坚持使用“列表”的解决方案,这就是为什么我现在在这里问我的问题。我发现下面的变通办法不令我满意,因为我需要通常的“列表”的简单性 - 没有别的。

我主要不是使用元组或自己的类或静态数组来搜索解决方案,因为作为初学者,我很难处理复杂的结构或类。

编辑:我同时找到Dictionary<string, string>了,但我需要三个项目。我不记得我使用了什么,我只知道它已经准备好(来自 MS)包含在框架 NET 2 中,具有三个字符串元素,我可以使用 .Add 方法扩展这些元素。字符串数组已经具有静态大小,我无法使用初学者代码缩小或放大它。当我定义变量时,无法预见元素的最终计数,这就是问题所在。

如果您知道我忘记的语法并且无法再次找到,您可以用正确的答案回复我。我目前正在搜索语法。

4

4 回答 4

9

如果你真的不想创建一个类,你可以使用元组,它们并不复杂。

List<Tuple<string,string,string>> items 
= new List<Tuple<string, string, string>>(){ Tuple.Create("a","b","c")};

items.Add(Tuple.Create("1","2","3"));
items.Add(Tuple.Create("4","5","6"));
于 2019-07-08T07:23:13.180 回答
8

如果您要求使用语法来一次初始化包含多个元素的列表,那么:

var l = new List<string>{ "string1", "string2", "string3" .... };

如果您正在寻找一种在单个列表项中保存三个字符串的方法,而不使用元组或自定义类,那么恐怕没有办法做到这一点。

编辑:除非您正在生成字符串 - 在这种情况下,您可以以匿名类型生成它们,例如:

Enumerable
    .Range(1, 100)
    .Select(i => new 
    { 
        string1 = "string1" + i, 
        string2 = "string2" + i, 
        string3 = "string3" + i 
    });

但这真的很奇怪。

此外,您可以使用列表列表,例如:

var l = new List<List<string>>
{ 
    new List<string> { "string 1", "string 2", "string 3" }, 
    new List<string> { "string 1", "string 2", "string 3" }
};
于 2013-09-04T17:40:38.920 回答
2

“我不需要一个解决方案,说我要创建自己的课程。我绝对不会重新发明已经存在的数据类型!” List<string,string,string>不是已经存在的数据类型。您过去可能做过类似的事情;

// Another simple way would be to create a class which has a constructor to hold the three strings
    public class PairedValues
    {
        // These are just simple ways of creating a getter and setter in c#
        public string value1 { get; set; }
        public string value2 { get; set; }
        public string value3 { get; set; }

        // A constructor which sets all your getters and setters
        public PairedValues(string Value1, string Value2, string Value3)
        {
            value1 = Value1;
            value2 = Value2;
            value3 = Value3;
        }
    }

利用类;

        // Simply initialize a list of your new class
        List<PairedValues> pairedValues = new List<PairedValues>();
        // add you object to the list anonymously 
        pairedValues.Add(new PairedValues("string1","string2","string3"));
        pairedValues.Add(new PairedValues("string1", "string2", "string3"));

        // Accessing the values
        foreach (PairedValues pair in pairedValues)
        {
            string value1 = pair.value1;
            string value2 = pair.value2;
            string value3 = pair.value3;
        }

在 Windows 窗体中使用它的示例;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        // Another simple way would be to create a class which has a constructor to hold the three strings
        public class PairedValues
        {
            public string value1 { get; set; }
            public string value2 { get; set; }
            public string value3 { get; set; }

            public PairedValues(string Value1, string Value2, string Value3)
            {
                value1 = Value1;
                value2 = Value2;
                value3 = Value3;
            }
        }

        public Form1()
        {
            InitializeComponent();

            // Simply initialize a list of your new class
            List<PairedValues> pairedValues = new List<PairedValues>();
            pairedValues.Add(new PairedValues("string1", "string2", "string3"));
            pairedValues.Add(new PairedValues("string1", "string2", "string3"));

            // Accessing the values
            foreach (PairedValues pair in pairedValues)
            {
                string value1 = pair.value1;
                string value2 = pair.value2;
                string value3 = pair.value3;
            }
        }
    }
}
于 2013-09-04T17:51:33.390 回答
0

您可能正在考虑您曾经创建的扩展方法。

public static class MyExtensions
{
    public static void Add(this List<String> list, String param1, String param2, String param3)
    {
        list.Add(param1);
        list.Add(param2);
        list.Add(param3);
    }
}

然后,只要您有一个 using for System.Linq,您就可以在任何 List 实例上调用它:

    List<String> stringList = new List<String>();
    stringList.Add("something", "awesome", "here");

有关扩展方法及其工作原理的更多信息,请访问此处

于 2013-09-04T17:52:24.330 回答