プログラムを作成するとき、クラスの作成を正当化するのに十分な共通性を持たない値のセットを論理的にグループ化することは非常に一般的です。
多くのプログラミング言語では、1つの方法で型を作成しなくても、関係のない値のセットを論理的にグループ化できます。
void M(int foo, string bar, double blah)
論理的には、これは、int、string、doubleの3タプルである引数を1つ取るメソッドMとまったく同じです。しかし、私はあなたが実際に作らないことを望みます:
class MArguments
{
public int Foo { get; private set; }
... etc
MArgumentsがビジネスロジックで他の意味を持たない限り。
「クラスよりも軽量な構造で、関係のないデータの束をグループ化する」という概念は、メソッドの正式なパラメータリストだけでなく、多くの場所で役立ちます。メソッドが返すものが2つある場合や、1つではなく2つのデータから辞書をキー付けする場合などに便利です。
タプル型をネイティブにサポートするF#のような言語は、ユーザーに大きな柔軟性を提供します。これらは非常に便利なデータ型のセットです。BCLチームは、F#チームと協力してフレームワークの1つのタプルタイプを標準化し、すべての言語がそれらの恩恵を受けることができるようにすることを決定しました。
ただし、現時点では、C#のタプルに対する言語サポートはありません。タプルは、他のフレームワーククラスと同様に、単なる別のデータ型です。それらについて特別なことは何もありません。架空の将来のバージョンのC#でタプルのサポートを追加することを検討しています。タプルに関連するどのような機能が見たいかについて誰かが何か考えを持っている場合、私はそれらを設計チームに伝えたいです。現実的なシナリオは、理論的な考察よりも説得力があります。