2017-05-09 8 views
-1

私の問題は、データをリストに追加して座標を保持する方法がわからないことです(リストではなく配列を使用する必要があります)。ここでC#:リストにデータを追加するには

は、私は、座標(i、j)を維持することにより、一覧表示するデータを追加する必要がありますコードです:

for(int i = 0; i < x; i++) //x = amount of vertical lines 
{ 
    for(int j = 0; j < y; j++) //y = length of one line 
    { 
     //labyrinth[i][j] is the string type list 
     //intLabyrinth is int type list 
     if (labyrinth[i][j] == '.') intLabyrinth.Add(0); 
     if (labyrinth[i][j] == '#') intLabyrinth.Add(-1); 
     if (labyrinth[i][j] == '@') intLabyrinth.Add(1); 
     if (labyrinth[i][j] == '%') intLabyrinth.Add(-2); 
    } 
} 

それでは、どのように私はそれを修正することができますか?

ありがとうございました!あなたがあなたのリストに複数の値を格納する場合

+0

あなたは何を追加する必要がありますか?そしてそのデータは座標ですか? [MCVE] –

+0

「自分の座標を維持する」とはどういう意味ですか?どうやって?どこ?どうして? – Svish

+0

'intLabyrinth'があなたが話しているリストであれば、あなたはすでにそれをやっています。 – Stefan

答えて

0

、この場合には、あなたはTuple

を使用することができ、次のようにリストを再定義:

//i, j, value 
List<Tuple<int,int,int>> newLabyrinthList = new List<Tuple<int,int,int>>(); 

そして追加よりも、あなたが欲しいために(私は、例えば、

if (labyrinth[i][j] == '.') newLabyrinth.Add(new Tuple<int,int,int>(i,j,0)); 
if (labyrinth[i][j] == '#') newLabyrinth.Add(new Tuple<int,int,int>(i,j,-1)); 
if (labyrinth[i][j] == '@') newLabyrinth.Add(new Tuple<int,int,int>(i,j,1)); 
if (labyrinth[i][j] == '%') newLabyrinth.Add(new Tuple<int,int,int>(i,j,-2)); 

は、あなたが使用して値を取得することができます)この例ではI、J、値を使用します。

int i = newLabyrinth[0].item1; 
int j = newLabyrinth[0].item2; 
int v = newLabyrinth[0].item3; 

またはループから

foreach(var tuple in newLabyrinth) 
{ 
    int i = tuple.item1; 
    int j = tuple.item2; 
    int v = tuple.item3; 
} 

これはあなたのリストに格納するクラスを定義することができますあいまいにしている場合:

public class OperationAtCoordinate 
{ 
    public int X {get;set;} 
    public int Y {get;set;} 
    public int Operation{get;set;} 
} 

その後、次のようなリストが必要になります

List<OperationAtCoordinate> newnewLabyrinth = new List<OperationAtCoordinate>(); 

電話による追加:

newnewLabyrinth.Add(new OperationAtCoordinate() 
        { 
         X = i, 
         Y = j, 
         Operation = //your value here 
        }); 
関連する問題