Cá nhân, tôi thấy Tuple.Create()
ít tiết và dễ đọc hơn.
Không có sự khác biệt, dưới mui xe. Các Tuple.Create()
phương pháp quá tải chỉ là một loạt các phương pháp tĩnh gọi phiên bản đầu tiên bạn đăng:
public static class Tuple
{
public static Tuple<T1> Create<T1>(T1 item1) {
return new Tuple<T1>(item1);
}
public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2) {
return new Tuple<T1, T2>(item1, item2);
}
public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3) {
return new Tuple<T1, T2, T3>(item1, item2, item3);
}
...
Tôi cho rằng một lợi ích là, kể từ khi bạn không cần phải xác định loại với Tuple.Create
, bạn có thể lưu trữ vô danh các loại mà bạn sẽ không thể nói loại đó là gì.
public class Person
{
public string Name { get; set; }
public int Height { get; set; }
public DateTime BirthDate { get; set; }
}
var people = new List<Person>
{
new Person { Name = "Bob", Height = 72, BirthDate = new DateTime(1984,1,1) },
new Person { Name = "Mary", Height = 64, BirthDate = new DateTime(1980,2,2) }
};
var oneAnonList = people.Select(x => new { x.Name, x.BirthDate });
var twoAnonList = people.Select(x => new { x.Height, x.Name });
var myTuple = Tuple.Create(oneAnonList, twoAnonList);
này tạo ra một tuple với hai loại vô danh, đầu tiên là một new { string Name, DateTime BirthDate }
và thứ hai là một new { int Height, string Name }
.
Vẫn không quá nhiều bạn có thể làm với điều đó, vì chuyển nó sang phương pháp khác, bạn vẫn cần phải xác định "loại" của tham số. Vì vậy, nó thực sự đi xuống để thuận tiện.
'Tuple t1 = new Tuple (1,2);' <----- đây là lý do tại sao C# có từ khóa 'var'. –