Вопрос по c#, list, .net – Создайте наш собственный список <строка, строка, строка>

8

Можем ли мы сделать свой собственныйList<string, string, string> в C # .NET? Мне нужно сделать список, содержащий 3 разных строки в качестве одного элемента в списке.

Ваш Ответ

11   ответов
1

List<Tuple<string, string, string>> ?

Лучше было бы, хотя, если каждая из строк имеет конкретное значение, поместить их все в класс, а затем создать его список.

0

е как IList). Коды дуют.

public class List<T1, T2, T3> : IList
{

    #region IList Members

    public int Add(object value)
    {
        throw new NotImplementedException();
    }

    public void Clear()
    {
        throw new NotImplementedException();
    }

    public bool Contains(object value)
    {
        throw new NotImplementedException();
    }

    public int IndexOf(object value)
    {
        throw new NotImplementedException();
    }

    public void Insert(int index, object value)
    {
        throw new NotImplementedException();
    }

    public bool IsFixedSize
    {
        get { throw new NotImplementedException(); }
    }

    public bool IsReadOnly
    {
        get { throw new NotImplementedException(); }
    }

    public void Remove(object value)
    {
        throw new NotImplementedException();
    }

    public void RemoveAt(int index)
    {
        throw new NotImplementedException();
    }

    public object this[int index]
    {
        get
        {
            throw new NotImplementedException();
        }
        set
        {
            throw new NotImplementedException();
        }
    }

    #endregion

    #region ICollection Members

    public void CopyTo(Array array, int index)
    {
        throw new NotImplementedException();
    }

    public int Count
    {
        get { throw new NotImplementedException(); }
    }

    public bool IsSynchronized
    {
        get { throw new NotImplementedException(); }
    }

    public object SyncRoot
    {
        get { throw new NotImplementedException(); }
    }

    #endregion

    #region IEnumerable Members

    public IEnumerator GetEnumerator()
    {
        throw new NotImplementedException();
    }

    #endregion
}

Тем не мение,List<Tuple<string,string,string>> Рекомендовано.

3

 public class MyCustomClass
    {
        public string MyString1 { get; set; }
        public string MyString2 { get; set; }
        public string MyString3 { get; set; }
    }

    class MyApp
    {
        public MyApp()
        {
            List<MyCustomClass> customList = new List<MyCustomClass>();
            customList.Add(new MyCustomClass
            {
                MyString1 = "Hello",
                MyString2 = "Every",
                MyString3 = "Body",
            });
        }
    }
0
public class Listt< T, T1, T2>
    {
         public Listt()
        {

        }
        public void Add(T item, T1 item1, T2 item3)
        {

        }
    }


public partial class MyApp : Window
{

 public MyApp()

 {

  InitializeComponent();

     Listt<string, string, string> customList = new Listt<string, string, string>();
     customList.Add("we","are","here");

  }
}
28

List с тремя параметрами общего типа. я мог быstrongly отговорить вас от этого, хотя. Это может сбить с толку любого, кто использует ваш код.

Вместо,either использованиеList<Tuple<string, string, string>> (если вы все равно используете .NET 4) или (предпочтительно) создайте свой собственный класс для инкапсуляции этих трех строк осмысленным образом, тогда используйтеList<YourNewClass>.

Создание вашего собственного класса сделает его более понятным, когда вы пишете и читаете код - давая имена трем различным задействованным строкам, каждый будет знать, что они означают. Вы также можете дать больше поведения классу, как и когда вам нужно.

@HotTester: что вы подразумеваете под возвратом значений?
@HotTester: Да, создав свой собственный тип. Если вы полностью настроены против создания нового типа, вы можете(ab)use cast by example
как извлечь значения из созданного списка кортежей? HotTester
@HotTester: Используйте свойстваTuple<,,> - но это будет намного менее читабельным, чем создание вашего собственного класса.
@HotTester: В этом и заключается смысл создания собственного типа (и, возможно, его поведения и т. Д.). Вы не можете изменять свойстваTuple, но вы можете создавать свои собственные классы со своими собственными свойствами ...
0

к сожалению, это не работает. Лучшее, что вы можете сделать, - это создать список списков или использовать некоторую форму реализации интерфейса IDictionary.

Несмотря на это, если у вас есть три элемента данных, которые связаны друг с другом таким образом, вероятно, стоит создать класс для их хранения.

Это даст вам возможность передать список вокруг вашего приложения и присвоить значимые имена каждому элементу данных. Никогда не стоит недооценивать силу читабельности через шесть месяцев.

На самом деле, если честно, решение @ Tigran не только лучше моего, оно научило меня тому, чего я не знал. Хороший.
0

dynamic ?

var list = new List<dynamic>();
list.Add(new { Name = "SampleN", Address = "SampleA", Email = "SampleE" });

var name = list[0].Name;
11

Кортеж чтобы достичь этого.

Например:

var list = new List<Tuple<string,string,string>>();

перебирать значения, которые выmay want сделать просто:

    list.ForEach(x=>{
     //x is a Tuple
    });

илиfind какой-то конкретный набор, тыmay want сделать следующее:

     var list = new List<Tuple<string,string,string>>{
        new Tuple<string,string,string>("Hello", "Holla", "Ciao"),
        new Tuple<string,string,string>("Buy", "--", "Ciao")
     };

     list.Where(x=>x.Item2 == "--");

Это вернет последний кортеж.

3

кортежи, Вот так:

List<Tuple<string, string, string>>
2

var list = new List<Tuple<string, string, string>>();
var tuple = Tuple.Create("a", "b", "c");
list.Add(tuple);

Для получения дополнительной информации, посмотрите вMSDN.

Спасибо, ссылка очень ... русская. Хорошо, что я могу прочитать & quot; & # x420; & # x43E; & # x441; & # x441; & # x438; & # x44F; (Р & # x443; & # X441; & # X441; & # x43A; & # x438; & # x439;) & Quot ;.
Для тех, кто не умеет читать по-русски ...;)msdn.microsoft.com/library/system.tuple.aspx
3

var ls= new List<Tuple<string,string,string>>();

Похожие вопросы