There's a few downsides to the Tuple class as mentioned here:
https://github.com/dotnet/roslyn/issues/347
Namely, heap allocation and the inability to name tuple members.
Namely, heap allocation and the inability to name tuple members.
Type inference FTW.
using Complex = System.Tuple<double, double>;
Edit: Clarity
using Complex = System.Tuple<double, double>;
is less verbose than public class Complex
{
public double i { get; set; }
public double j { get; set; }
} public class Complex {
private readonly double _i;
private readonly double _j;
public double I {get {return _i;}}
public double J {get{return _j;}}
public Complex(double i, double j){
_i = i;
_j = j;
}
}
But System.Tuple is also IComparable, IStructuralComparable, IStructuralEquatable. I haven't had enough coffee yet to add all the boilerplate for that to the above, which only reinforces the point about verbosity. public class Complex {
public double I { get; }
public double J { get; }
public Complex(double i, double j) {
I = i;
J = j;
}
} public class Complex {
public double I { get; private set; }
public double J { get; private set; }
public Complex(double i, double j) {
I = i;
J = j;
}
}