Chúng tôi có thể tự tạo List<string, string, string>
trong C# .NET không? Tôi cần tạo một danh sách có 3 chuỗi khác nhau như một phần tử duy nhất trong danh sách.Tạo danh sách riêng <string, string, string>
Trả lời
Bạn chắc chắn có thể tạo lớp của riêng mình gọi là List
với ba thông số loại chung. Tôi sẽ mạnh mẽ không khuyến khích bạn làm như vậy. Nó sẽ gây nhầm lẫn cho bất kỳ ai sử dụng mã của bạn.
Thay vào đó, một trong hai sử dụng List<Tuple<string, string, string>>
(nếu bạn đang sử dụng .NET 4, dù sao) hoặc (tốt) tạo lớp của riêng bạn để đóng gói những ba chuỗi trong một cách có ý nghĩa, sau đó sử dụng List<YourNewClass>
.
Tạo lớp học của riêng bạn sẽ làm cho nó rõ ràng hơn khi bạn viết và đọc mã - bằng cách đặt tên cho ba chuỗi khác nhau có liên quan, mọi người sẽ biết ý nghĩa của chúng. Bạn cũng có thể cung cấp nhiều hành vi hơn cho lớp học và khi bạn cần.
Bạn có thể sử dụng danh sách tuples. Giống như vậy:
List<Tuple<string, string, string>>
Có lẽ một cái gì đó như thế này:
var ls= new List<Tuple<string,string,string>>();
Làm thế nào về việc một List<Tuple<string, string, string>>
?
Một ý tưởng tốt hơn có thể là mặc dù, nếu mỗi chuỗi có ý nghĩa cụ thể, để đưa tất cả vào một lớp và sau đó tạo danh sách đó.
Bạn có thể sử dụng Tuple để đạt được điều đó.
Ví dụ:
var list = new List<Tuple<string,string,string>>();
để lặp qua các giá trị bạn có thể muốn để làm một đơn giản:
list.ForEach(x=>{
//x is a Tuple
});
hoặc tìm một số tupple cụ thể, bạn có thể muốn để làm điều này:
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 == "--");
Thao tác này sẽ trả lại Tuple cuối cùng.
Không, thật đáng tiếc điều này không hoạt động. Điều tốt nhất bạn có thể làm là tạo danh sách các danh sách hoặc sử dụng một số dạng triển khai giao diện IDictionary.
Mặc dù, điều đó nói rằng, nếu bạn có ba mục dữ liệu thuộc về nhau theo cách này, có thể đáng giá khi tạo một lớp để chứa chúng.
Điều đó sẽ cho bạn cơ hội để chuyển Danh sách quanh ứng dụng của bạn và gán tên có ý nghĩa cho từng mục dữ liệu. Không bao giờ đánh giá thấp sức mạnh của khả năng đọc sáu tháng xuống dòng.
Thật ra là đầu, giải pháp của @ Tigran không chỉ tốt hơn tôi, nó dạy tôi điều gì đó mà tôi không biết . Đẹp nhất. – inksmithy
Bạn có thể xác định Danh sách và triển khai các giao diện cần thiết (chẳng hạn như IList). Mã thổi.
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
}
Tuy nhiên, List<Tuple<string,string,string>>
được khuyên dùng.
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");
}
}
Ví dụ:
var list = new List<Tuple<string, string, string>>();
var tuple = Tuple.Create("a", "b", "c");
list.Add(tuple);
Để biết thêm thông tin, hãy nhìn vào MSDN.
Tôi khuyên bạn nên giải pháp này
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",
});
}
}
Bất cứ ai cố gắng dynamic
?
var list = new List<dynamic>();
list.Add(new { Name = "SampleN", Address = "SampleA", Email = "SampleE" });
var name = list[0].Name;
- 1. LINQ - rẽ Danh sách <string> vào Dictionary <string, string>
- 2. C# Chuyển đổi Danh sách <string> thành Từ điển <string, string>
- 3. Danh sách sắp xếp <String[]>
- 4. Danh sách LINQ <string> union
- 5. So sánh Danh sách <String[]>
- 6. Android lưu Danh sách <String>
- 7. Cách chuyển đổi danh sách Danh sách <String> thành csv string
- 8. C# LINQ String [] Danh sách trừ từ String [] Danh sách
- 9. chuyển đổi List <Danh sách <string[]>> vào string [] [] [] trong C#
- 10. đọc SQL Bảng thành Dictionary <string, Danh sách <string[]>>
- 11. Lấy khóa từ giá trị - Từ điển <string, Danh sách <string>>
- 12. Danh sách <String> cho ArrayList <String> vấn đề chuyển đổi
- 13. chuyển đổi EnumerableRowCollection <string> vào danh sách <string>
- 14. Java Generics đặt trên Bản đồ <String,? mở rộng Danh sách <String>>
- 15. Sự khác nhau giữa Danh sách <string> và IEnumerable <String> là gì?
- 16. xsd: danh sách các kiểu tùy chỉnh được tạo ra vào Danh sách <String>
- 17. Danh sách chuyển đổi <Integer> thành Danh sách <String>
- 18. JSON.net - trường là chuỗi hoặc Danh sách <string>
- 19. SQL Chọn giá trị trong Danh sách <string>
- 20. ArrayList <HashMap <String, String >> để String []
- 21. C# - Deserialize một danh sách <String>
- 22. Tự động hóa NHIbernate của Danh sách <string>?
- 23. Tại sao tôi không thể tạo từ điển <string, dictionary <string, string >>?
- 24. Chuyển đổi Danh sách <Enum> vào danh sách <string>
- 25. Danh sách Hiệu suất SqlDataReader <string[]> hoặc Danh sách <object[]>
- 26. Chia chuỗi vào danh sách <string> với LINQ
- 27. WPF: Liên kết DataGrid với Danh sách <String>
- 28. Chuyển đổi StringCollection vào danh sách <String>
- 29. Chuyển đổi mảng chuỗi thành Danh sách <string>
- 30. Danh sách <String> readStringArray in Parcelable
cách lấy lại các giá trị từ Danh sách tệp được tạo? – HotTester
@HotTester: ý của bạn là gì khi tìm nạp lại các giá trị? – Arion
@HotTester: Sử dụng các thuộc tính của 'Tuple <,,>' - nhưng nó sẽ dễ đọc hơn nhiều so với việc tạo lớp của riêng bạn. –