2017-12-26 9 views
-4

変更:リストは、私がこの機能に問題があるがC#の

static List<int> transposition(List<List<int>> main_list, int ammount) 
    { 
     List<int> return_list = new List<int>(); 
     List<int> b = new List<int>(); 
     List<List<int>> new_list = new List<List<int>>(); 
     new_list = main_list; 
     int i = 0; 
     int j = 0; 
     int x = 0; 
     int key = 0; 
     Random rnd = new Random(); 
     foreach (List<int> subList in new_list) 
     { 
      x = subList[2]; 
     } 
     while (i < ammount) 
     { 
      i++; 
      key = rnd.Next(0, x + 1); 
      while (j < new_list.Count) 
      { 
       if (key >= new_list[j][1] && key <= new_list[j][2]) 
       { 
        List<int> one_element = new List<int>(); 
        one_element.Add(new_list[j][0]); 
        one_element.Add(new_list[j][1]); 
        one_element.Add(new_list[j][2]); 
        one_element.Add(new_list[j][3]); 
        if (j != 0) 
        { 
         b = new_list[j - 1]; 
         new_list[j - 1] = one_element; 
         new_list[j] = b; 
        } 
       } 
       j++; 
      } 
     } 
     foreach (List<int> element in new_list) 
     { 
      return_list.Add(element[3]); 
     } 
     return return_list; 
    } 

あなたは、私がこの関数に「main_list」を渡していると問題がある見ることができるように、このリストが変更で関数。私はPythonで同じ問題を抱えていましたが、この 'new_list = main_list [:]'のように[:]を追加することで問題を解決しました。しかし、私はC#でこれを行う方法が見つかりませんでした。助言がありますか?

+4

「コピー」リストに加えられた変更は、元のリストを反映しています - c#](https://stackoverflow.com/questions/39633104/changes-made-on-copy-list-are-reflecting-original- list-c-sharp) –

+1

そのオブジェクトを使用したくないときにリストをインスタンス化するのはなぜですか? – Sunil

答えて

-1

代わりの

List<List<int>> new_list = new List<List<int>>(); 
new_list = main_list; 

これはmain_listからその内容を取り、新しいリストを作成

List<List<int>> new_list = new List<List<int>>(main_list); 

を行います。 main_listの独立したコピーを作成しました。

関連する問題