1

並べ替えや派手なことはしたくありません。左に名前、右に数字の2つの列が必要です。

このようなもの:

string/int[,] myArray = new string/int[,]();

すべての文字列には、対応する int があります。しかし、私はそれをソートしたりしたくありません。使い方を知っている辞書やその他の高度な方法を使用できることを知っています。シンプルにしたいこのような 2 つの型を持つ配列を作成する方法を最も単純な形式で見たいと思います。私が考えることができる最も簡単な方法は、オブジェクトを使用して、後で明示的に変換することです。これを行う簡単な方法はありますか?

4

3 に答える 3

7

これを行う最も簡単な方法は、Tupleクラスを使用することです。ジェネリック パラメーターと共に使用Tupleして、クラスを組み合わせてタプルを形成できます。たとえば、Tuple<string, int>またはTuple<string, int, int?, char>. 2 パラメータ バージョンのドキュメントは次のとおりですあなたが説明したケースでは、おそらく type のインスタンスが必要ですTuple<string, int>[]

、などのメソッドTupleを使用しての要素にアクセスできます。ItemXmyTuple.Item1myTuple.Item2

実際にタプルを作成するには、Tuple.Createメソッドを使用することをお勧めします。例:は、アイテムが正しく設定されTuple.Create("hello", 1)た を返します。Tuple<string, int>これらのCreateメソッドでは、ジェネリック パラメータを省略できます。

ちなみに、並べ替えは必要ないとおっしゃいました。new に対して LINQ クエリを実行することで、任意の並べ替えをかなり簡単に取得できますTuple<string, int>(これは を実装しているため、LINQ の拡張機能をIEnumerable<Tuple<string, int>>実行できます)。IEnumerableたとえばint、タプルの一部、次に `string 部分で並べ替えるには、次のようにします。

 myTupleArray.OrderBy(t => t.Item2).ThenBy(t => t.Item2);

その他のオプションについては、OrderByDescendingおよびも参照してください。ThenByDescending

于 2013-06-21T02:29:33.433 に答える
1

Objectクラスを使用しない理由。

Object[] myarray = {string1,int1,string2,int2}

stringsをグループ化したい場合、intsこれを行うことができます:

Object[][] myarray = { {string1,int1}, {string2,int2} };
myarray[0][0] = string1 and myarray[0][1]=int1
于 2013-06-21T03:12:13.313 に答える
1

タプルは、ベンも言ったように素晴らしい選択ですが、その結果を達成するために配列のみを操作したい場合は、おそらくこのようなものです..

            Array[] m = new Array[2];

            m[0] = new string[10]{"2","5","7","9","12","53","11","36","39","4"};
            m[1] = new int[10] { 2, 5, 7, 9, 12, 53, 11, 36, 39, 4 };

            int val = (int)m[1].GetValue(3);
            string str = (string)m[0].GetValue(3);
于 2013-06-21T03:24:31.890 に答える