0

呼び出された場所に2 つのパラメーターを送り返したい関数を取得しましたがINT、何が最適なオプションかわかりませんDictionary。またはList_Array

編集済み

.Net フレームワーク 2 を使用しています

4

7 に答える 7

6

呼び出し元に2つの値を返すことを意味していると思います。もしそうなら:

それは、発信者にとって何が最も理解しやすいか、つまり、何があなたの意図を最もよく表しているかによって異なります。

結果が常に2 つの値を持つ場合、可変サイズのコレクションを返すことは直感的ではない場合があります。私の好みは、タプルまたはカスタム型です。Tuple には、既存の型であるという利点がありますが、メンバーの意味が明確でないという欠点があります。それらは単に「Item1」、「Item2」などと呼ばれます。

このoutキーワードは、成功しない可能性があり、常に bool を返す操作に適していpublic bool int.TryParse( string value, out int parsedValue )ます。ここで意図は明らかです。

于 2012-07-31T09:57:30.127 に答える
2

2つのintのみを使用している場合は、2タプルを使用しTuple<int, int>ます。

コンストラクターで2つの値を使用して初期化できます。

return new Tuple<int,int>(val1, val2);

あるいは、可変数の出力の場合、a List<int>(またはIEnumerable<int>使用目的に応じて)。

于 2012-07-31T09:58:10.193 に答える
2

私はそういうように、私はそれを参照によって返す必要があると思います....

private void ReturnByRef(ref int i1, ref int i2) {

}
于 2012-07-31T09:58:50.307 に答える
2

このコードで試してください

type1 param1;
type2 param2;
void Send(out type1 param1, out type2 param2)

or

type1 param1 = ..;//You must initialize with ref
type2 param2 = ..;
void Send(ref type1 param1, ref type2 param2)
于 2012-07-31T09:57:37.387 に答える
2

パラメータmsdnなしで試すことができます

于 2012-07-31T09:57:54.580 に答える
1

まあ、それは場合によりますが、それを行うには複数の方法があります。送り返したいパラメーターが 2 つだけの場合は、"out" パラメーターを使用できます。

class A
{
  private static void foo(int param, out int res1, out int res2)
  {
    res1 = 1*param;
    res2 = 2*param;
  }

  public static void main(string[] args)
  {
    int res1, res2;
    foo(1, out res1, out res2);
    // Do something with your results ...
  }
于 2012-07-31T10:05:32.073 に答える
1

out パラメータが最適です

static void Main()
{
   int a;
   int b;
   someFunction(out a,out b); //the int values will be returned in a and b
   Console.WriteLine(a);
   Console.WriteLine(b);
}
public static void someFunction(out int x,out int y)
{
   x=10;
   y=20;
 }

あなたの出力は

10
20
于 2012-07-31T11:32:54.523 に答える