Perl には次の機能があります。
my ($a,$b,$c,$d) = foo();
wherefoo
は、一度に 1 つずつ割り当てるのではなく、4 つの変数を返します。C#に似たようなものはありますか?
Tuple
は、これに役立つ構成要素になる可能性があります。
public Tuple<int, string, double> Foo() { ... }
次に、次のことができます。
var result = Foo();
int a = result.Item1;
string b = result.Item2;
double c = result.Item3;
これは、C# に対する関数型プログラミング スタイルの影響が増大したことの遺産です。タプルは、多くの関数型言語の基本的な構成要素であり、静的型付けを大幅に支援します。
関数の場合、1 つのオブジェクトまたは のいずれかを返す必要がありますvoid
。しかし、この問題にはいくつかの方法でアプローチできます。
struct
aまたは aなどのデータ構造を作成して、関数としてclass
それを含みa,b,c,d
、返すことができます。たとえばdata foo()
、データには a、b、c、d が含まれます。out
が、変数入力を初期化する必要があります。詳細はこちら。http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspxを参照してください。ref
out と同じように which を使用することもできます。http://msdn.microsoft.com/en-US/library/14akc2c7(v=vs.80).aspxを参照してください。arrray
または aとしてコレクションの形式でそれらを返すことができますlist
また、 strcut を渡すタイプと、値を渡すオブジェクトのタイプに応じて、Value
またはとして渡されることも覚えておいてくださいReference
。http://msdn.microsoft.com/en-us/library/0f66670z(v=vs.71).aspxを参照してください。