Sometimes i need to use a Tuple, for example i have list of tanks and their target tanks (they chase after them or something like that ) :
List<Tuple<Tank,Tank>> mylist = new List<Tuple<Tank,Tank>>();
and then when i iterate over the list i access them by
mylist[i].item1 ...
mylist[i].item2 ...
It's very confusing and i always forget what is item1 and what is item2, if i could access them by :
mylist[i].AttackingTank...
mylist[i].TargetTank...
It would be much clearer, is there a way to do it without defining a class:
MyTuple
{
public Tank AttackingTank;
public Tank TargetTank;
}
I want to avoid defining this class because then i would have to define many different classes in different scenarios, can i do some "trick" and make this anonymous.
Something like :
var k = new {Name = "me", phone = 123};
mylist.Add(k);
The problem of course that i don't have a type to pass to the List when i define it
You can create an empty list for anonymous types and then use it, enjoying full intellisense and compile-time checks:
var list = Enumerable.Empty<object>()
.Select(r => new {A = 0, B = 0}) // prototype of anonymous type
.ToList();
list.Add(new { A = 4, B = 5 }); // adding actual values
Console.Write(list[0].A);