C#のListについて質問させてください。
テトリスのようなものを自作しようとしていて、
二次元リスト(List<List<int>>)の中身同士を足し算させようとしているのですが、
「1+4」の結果が「5」ではなく「14」になってしまっています。
「足し算」というよりは「文字の結合」のような有様です。
問題の例(というか箇所)ですが…
// Debug.Log("GetBlockID()。mino2D[" + i + "]番の第" + j + "ブロックはX="+ mino2D[i][bX] + mino2D[i][2] +"("+ mino2D[i][bX] +" + "+ mino2D[i][2] + "), Y="+ mino2D[i][bY] + mino2D[i][3] +"("+ mino2D[i][bY] +" + "+ mino2D[i][3] + ")です。引数pX=" + pX + "引数pY=" + pY);
if (mino2D[i][bY] + mino2D[i][3] == pY) // 引数のYと、Listに格納されているYを確認します。
{
// コードはかなり長いので省略させていただいてます。(必要でしたらすぐに掲載いたします。)
// 「mino2D」は整数型List型List(List<List<int>>)で、
// 「bY」と「i」は数値型の変数です。(情報不足でしたらすぐに掲載いたします。)
}
…というif文の中で、「mino2D[i][bY] + mino2D[i][3]」という足し算を行なっているのですが、
私としては、「mino2Dの[i]の[bY]に格納されている数値と、mino2Dの[i]の[3]に格納されている数値を足し算している」つもりなのですが、
冒頭にご説明したとおりの「結合」のような結果になってしまっています。
足し算さえ行わなければ、単体の値としては、Debug.Log()やUnityエディターのインスペクターでは正常な値が表示されていることは確認しています。
(正解かどうかはわかりませんが、)私としては、「整数型List型のList」と「整数型のList」は違うものだからこういう現象が起こっているのでは…?
と感じています。
中身がListであるListを中身が数値であるListのように扱ったから、List型Listの中身はListであって数値ではない。
だから「0+5」の結果が「5」ではなく「05」とDebug.Log()で表示されてしまう。
そう考えるとこの現象は説明できるのですが、解決策が今の所わかりません。
そこでお伺いしたいのですが、こういうList<List<int>>の値同士を足し算する場合はどのような方法があるのでしょうか?
できるものならif()条件式の中に記述できる方法だとありがたいです。
自分で苦しんだ分しか成長しない世界だと思うし、安易に人様の時間を奪うのは好きではありませんが、もしご存知の方がいらっしゃればお教えいただけると助かります。
回答2件
あなたの回答
tips
プレビュー