• 締切済み

【C#】配列名の異なる同じ処理

お世話になっております。 Unity 4.0 C#で開発を行っているのですが、 以下の比較する配列名が違うだけの 処理1と処理2を1つにできず悩んでいます。 unsafeを使用するとポインタを使えるようなのですが、 推奨されていない機能なので別の方法を探しています。 配列Aと配列Bは基底クラスが全く一緒なので、 基底クラスにデータセット処理を作って無駄な処理を無くしたいです。 こんなページを見てみたら? このキーワードで検索してみろでも 良いのでご教授下さい。 ●処理1  for(i = 0; i < Max;i++)  {   if(readArray[0] ==     配列A[i].id.ToString())    {     chkFlg = true;    }  } ●処理2  for(i = 0; i < Max;i++)  {   if(readArray[0] ==     配列B[i].id.ToString())   {    chkFlg = true;   }  } 以上、よろしくお願いします。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

引数として配列を渡す関数やメソッドを書けばよいのでは。 ダメな理由があるなら別ですが。

参考URL:
http://ideone.com/yvWv6I
Gyustab
質問者

お礼

ご返信ありがとうございます。 その方法でできました。 基底クラスXに機能を持たせようとしたのですが、 基底クラスXを元に作った配列Aと配列Bの処理を 基底クラスXのメソッドに作ろうとしたらコンパイラーに怒られました。 循環参照になるのかなあと考えています。 /////////////////////////////////////////// 配列Aと配列Bの基底クラスはX class testClass { メソッド1(配列A) メソッド1(配列B) } public class 基底クラスX {   メソッド1(配列) { 処理を実行 } }

関連するQ&A

  • 多次元配列の処理について

    多次元配列を扱った処理を行ないたいのですが、一部でnullを受け取ってしまい、処理を行うことができません。 引数の配列には次のようなテキストが入っています。 --配列の内容-- 0,名詞-一般,1,5, 0,名詞-数,2,6, 0,名詞-接尾-助数詞,3,7, -------------- この配列をコマンドラインに書き出すと正確に表示されます。 しかし、配列の内容を参照して処理を行なうと2列目の処理のときにnullを参照してしまいます。 プログラムは以下のとおりです。 ---プログラム--- public class Dist {   public static int zairyo(String[][] date) {    int a = 0;    int b = 0;    int c = 0;    int d = 0;    int e = 0;    if(date != null) {     int f = 0;     System.out.println("//Dist//");     for(int m = 0; m < date.length; m++) {      for(int n = 0; n < date[0].length; n++) {       if(date[m][n] != null) {        System.out.print(date[m][n] + "\t");        f++;        if(f == date[0].length) {         System.out.println("");         f = 0;        }       }      }     }     for(int i = 0; i < date.length; i++) {      if(date[i][1] != null) {       if(date[i][1] == "名詞-一般")        a++;       if(date[i][1] == "名詞-数")        b++;       if(date[i][1] == "名詞-接尾-助数詞")        c++;      }else System.out.println("2列目null");     }     int j = date.length - 1;     d = Integer.parseInt(date[j][2]);     e = Integer.parseInt(date[j][3]);    }else System.out.println("Dist:null");    if(a > 0 && b > 0 && c > 0 && d <= 10 && e <= 15) {     return 1;    }else return 0;   } } ------------------------ 原因は何なのでしょうか? ご教授お願いします。

  • C# 配列の配列(多次元配列?)

    C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定  テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する   A=1,2,3・・・   B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) {  string strBuffer;  //「=」前の値格納用変数  string[] strBuffer2; //「=」後の値格納用配列  listtmp=null;  //strtmpに「=」前の値を格納  strtmp = TextLine.Split('=').GetValue(0).ToString();  //strtmp2に「=」後の値を格納(配列)  strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(',');  for (int i = 0; i <= strtmp2.Length - 1; i ++)  {   //[i,0]に、「=」前の値を代入   if (i == 0)   {   listtmp.Add(strtmp);   }   else   {   listtmp.Add(strtmp2[i].ToString());   }  }  //list配列にlistTmp配列を格納(配列の配列)  list.Add(listtmp);  intT = intT + strtmp2.Length;  //行数カウント  intTLine = intTLine + 1;  } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。

  • 配列について

    Visual Basic6について質問です。 for i =0 to 5 chk(i).value=true のようにカッコ内の配列はうまく動くのですが、 for i =0 to 5 chki.value=true のようにコントロールのオブジェクト名に配列をくみたいのですがエラーがでてしまいます。 このような処理をしたい場合はどうしたらいいのでしょうか。。。

  • 【Java】ある数列から、素数を探すプログラムについて

    Java初心者です。独学なので質問できる環境が無く、 こちらで質問致します。回答をお願い致します。 以下のプログラムについて質問です。 class Prime { public static void main(String[] args) { int max = 100; // 素数を探す数の最大値 boolean[] a = new boolean[max]; // 素数かどうか判定する配列 // 配列の初期化 for(int i = 0; i < max; i++) a[i] = true; // 素数かどうか判定 for(int i = 2; i < max; i++) { if(a[i-1]) { for(int j = 2; i*j <= max; j++) a[i * j - 1] = false; } else continue; } // 結果を表示 for(int i = 1; i < max; i++) { if(a[i]) System.out.print((i + 1) + " "); } System.out.println(); } } 上記の「配列の初期化」の個所、 for(int i = 0; i < max; i++) a[i] = true; ここでなぜ、a[i] = true;となるかわかりません。 0と1はどちらも素数ではないと思うので、 私はtrueではないと思うのですが・・・。 ぜひとも教えて頂きたいと思います。

    • ベストアンサー
    • Java
  • ExcelVBAでの配列処理について

    処理速度向上を目的に配列を利用したいのですが、結果の書きだし処理で悩んでいます。 Dim aa(10000,2) as Double for i = 1 to 10000 for j = 1 to 2 aa(i,j)=Rnd() next j next i 上記の処理で、10000行と2列の乱数表データが配列として出来、そのデータをシートに書き出しするときに、列を2つほど飛ばして書き出したいのですが、どうすればよいのでしょうか? range("A1:B10000") = aa  という連続した列ではなく、A列に1万行、D列に1万行書き出したいと思っています。 処理速度を向上させたいので、またFor分処理するのではなく、一気に書き出したいと思っています。 ご教授のほどよろしくお願い申し上げます。

  • ActionScriptでの配列について

    var table:Array=["A1","A2"]; と配列を宣言しています。 他のレイヤーでこの配列の値を取得し onClipEvent(load){ for(i=0;i<=_root.table.length;i++){ if(_root.table[i] == "A1"){ //処理1     }else{ //処理2 } というようにその配列の値があれば処理1をなければ処理2をするプログラムを書きたいのですが・・。 rootの配列を読み込むやりかたを教えていただきたいです。 どなたかアドバイスいただけると助かります。

  • 関数内での繰り返し処理の結果を配列で受け取りたい

    関数内でfor文で繰り返し処理を行い、 結果を配列として返すような関数を書きたいと思っています。 function hoge(){ var a = [1,2,3,4]; for (var i=0; i < a.length; i++){ a1 = "a" + i; var arr = new Array(); arr.push(a1); } return arr; } しかし、以下のように 関数hogeの結果を変数bで受け取ってみると、 配列の最後のデータしか表示されません。 var b = hoge(); alert(b); //a3のみが表示される a0, a1, a2, a3と表示されるようにするには、 どうしたらよいでしょうか。

  • 配列のポインタについて

    C言語で処理が下記のような処理を作成したいと思っております。 関数の引数によって、データを代入する配列を切り替えたいと考えております。 下記のような処理を考えた場合、if文の中・for文のbuffをどのように処理すれば よいでしょうか? アドバイスよろしくお願い致します。 int a[100][150]; int b[100][150]; void sample(int flg) { int i,j; unsigned short *buff; if(flg == 0){ buff = &a; }else{ buff = &b; } for( j=0 ; j<100 ; j++ ){ for( i=0 ; i<150 ; i++ ){ buff[y][x] = data; x++; } x = 0; y++; } }

  • javascript 二つの配列を比較し等しいもの

    すべてをdocument.writeする (x番目とi番目が等しいです。) タイトルが長くなってしまいました。 ひとまず、こんな形で実現できたのですが、もっとスマートな形でできないでしょうか・・? a=[2,9,8,4,3,5,7]//a配列 b=[9,2,4,5,7,3,8]//b配列 for(i=0;i<a.length;i++){ if(a[0]==b[i]){ document.write("a[0]と"+i+"が等しい<br/>"); } if(a[1]==b[i]){ document.write("a[1]と"+i+"が等しい<br/>"); } if(a[2]==b[i]){ document.write("a[2]と"+i+"が等しい<br/>"); } if(a[3]==b[i]){ document.write("a[3]と"+i+"が等しい<br/>"); } if(a[4]==b[i]){ document.write("a[4]と"+i+"が等しい<br/>"); } ~~~以下同じ略 } ※a配列b配列は同じ値をもっていますが毎回シャッフルされます。

  • 配列を回すとき、最後の要素だけ違う処理をしたい

    hoge[0]に対して、配列の中身を処理して, 最後にカンマを付与 hoge[1]に対して、配列の中身を処理して, 最後にカンマを付与 hoge[2]に対して、配列の中身を処理して, 最後にカンマを付与 hoge[3]に対して、配列の中身を処理して, 最後にカンマを付与しない というようなことをするとき、 どう書けばよいでしょうか? for ($i = 0 ; $i <count($hoge); $i++) {   if($i< count($hoge)-1){    //配列の要素が最後じゃないのに対する処理     .",";  }else{    //配列の要素が最後のに対する処理  } } ってしたら、とりあえず、動いたのですが、 普通はどういう風に書くのでしょうか? foreachとか、あるいは、配列の最後に対してする何か 書き方ってあるのでしょうか

    • ベストアンサー
    • PHP

専門家に質問してみよう