古い質問ですが、より良い解決策が必要だと思います。
タプル型を利用して名前付きパラメーターを取得できますが、.Item1、.Item2などを意味のあるプロパティ名でラップするカスタムの名前付き型でラップします。
タプルに名前のないパラメーターがあり、コードが読み取れなくなるという事実も嫌いですが、たとえば、構造体を辞書キーとして安全に使用できるように、IComparable、IStructuralEquatableなどを自分で実装する必要がある時間を無視することはできません。 。
これは非常に快適な妥協案だと思います。
public class Velocity : Tuple<double, double, string>
{
public Velocity(double Speed, double Direction, string Units) : base(Speed, Direction, Units) { }
public double Speed { get { return this.Item1; } }
public double Direction { get { return this.Item2; } }
public string Units { get { return this.Item3; } }
}
今、このゴミの代わりに:
Tuple<double, double, string> myVelocity = new Tuple<double, double, string>(10, 2.34, "cm/s");
System.Diagnostics.Debug.Print("Speed: " + myVelocity.Item1);
System.Diagnostics.Debug.Print("Direction: " + myVelocity.Item2);
System.Diagnostics.Debug.Print("Units: " + myVelocity.Item3);
あなたはこれを行うことができます:
Velocity myVelocity2 = new Velocity(10, 2.34, "cm/s");
System.Diagnostics.Debug.Print("Speed: " + myVelocity2.Speed);
System.Diagnostics.Debug.Print("Direction: " + myVelocity2.Direction);
System.Diagnostics.Debug.Print("Units: " + myVelocity2.Units);
また、辞書などで複雑なキーとして使用できるすばらしいタプル機能をすべて利用できます。
唯一の欠点は、単一のメソッドのスコープ内でこのタプルを使用することだけを計画している場合、そのメソッドを含むクラスのスコープ内で型を宣言する必要があることです。ほとんどのアプリケーションでは、それは問題ではないと思います。