C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: Varについて


(過去ログ 100 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■59603 / inTopicNo.1)  Varについて
  
□投稿者/ ラムダ (3回)-(2011/06/01(Wed) 22:47:40)
ラムダ さんの Web サイト

分類:[C#] 

自分が使用しているVisual Studio 2005ではLinqが使えないのですが(Webサイトは2008版で書いてあるみたいで)、
varで処理してる部分が全然わかりません。下記のような感じであってますでしょうか??

//var result = from invader in Invaders
//    where invader.Location.X > endgeOfScreenPixel
//    select invader;
//上記var変換...↓
foreach(cls_Invader invader in Invaders)
{
    //whereの部分の判定を記述???
    {
       invader;//?
    }
}//ここまで

//var invaderQuery = from invader in Invaders
//    orderby invader.Location.Y descending
//    select invader;
//上記varを変換...↓
SortedDictionary<invader.Location, int> invaderQuery = new SortedDictionary<invader.Location, int>();
foreach(cls_Invader invader in Invaders)
{
    //orderbyを判断?
    if(!invaderQuery.ContainsKey(invader.Location.Y))
    {
       invaderQuery.Add(invader.Location, 0);
    }
}//ここまで




引用返信 編集キー/
■59605 / inTopicNo.2)  Re[1]: Varについて
□投稿者/ 魔界の仮面弁士 (2189回)-(2011/06/01(Wed) 23:16:20)
No59603 (ラムダ さん) に返信
> 自分が使用しているVisual Studio 2005ではLinqが使えないのですが
3.5 の System.Core.dll を参照させて、System.Linq.Enumerable.Where 経由で
無理矢理利用する方法もありますが、正当なやり方ではありませんしね。

> (Webサイトは2008版で書いてあるみたいで)、
2005 向けの情報を探すか、もしくは 2008/2010 に切り替えた方が良いのでは。


> //var result = from invader in Invaders
> //    where invader.Location.X > endgeOfScreenPixel
> //    select invader;
こんな感じかな…。

List<Invader> result = new List<Invader>();
foreach(Invader invader in Invaders) {
  if(invader.Location.X > endgeOfScreenPixel) result.Add(invader);
}


> //var invaderQuery = from invader in Invaders
> //    orderby invader.Location.Y descending
> //    select invader;
こっちは、SortedDictionary では駄目だと思いますよ。Location.Y でグループ化されているわけではありませんし。
Invaders に IComparer を実装して Sort するようにするか、あるいは、
DataTable に入れて DataView でソートしてみては如何でしょうか。

引用返信 編集キー/
■59619 / inTopicNo.3)  Re[2]: Varについて
□投稿者/ 魔界の仮面弁士 (2190回)-(2011/06/02(Thu) 11:13:20)
No59605 (魔界の仮面弁士) に追記
>>//var invaderQuery = from invader in Invaders
>>//    orderby invader.Location.Y descending
>>//    select invader;

これで如何でしょう。Location.Y が同順の場合の並び順も定義したい場合は、
Comparison<T> の内容を適宜調整してみてください。


  List<Invader> sortedInvaders = new List<Invader>(Invaders);
  sortedInvaders.Sort(
      new Comparison<Invader>(
          delegate(Invader a, Invader b) {
              return b.Location.Y.CompareTo(a.Location.Y);
          }
      )
  );




> DataTable に入れて DataView でソートしてみては如何でしょうか。

DataView によるソートならこんな感じで。


  List<Invader> sortedInvaders = new List<Invader>();

  // DataTable を作成
  DataTable tbl = new DataTable();
  tbl.Columns.Add("Invader", typeof(Invader));
  tbl.Columns.Add("Location_Y", typeof(int));
  // DataTable に詰め直す
  foreach (Invader invader in invaders) {
      tbl.Rows.Add(invader, invader.Location.Y);
  }
  // Sort 指定して取り出す
  tbl.DefaultView.Sort = "Location_Y DESC";
  foreach (DataRowView rowView in tbl.DefaultView) {
      sortedInvaders3.Add((Invader)rowView["Invader"]);
  }

引用返信 編集キー/
■59651 / inTopicNo.4)  Re[3]: Varについて
□投稿者/ ラムダ (4回)-(2011/06/02(Thu) 20:39:26)
ラムダ さんの Web サイト
おぉ!!すごい!!
今掲示板見るまでまる一日試行錯誤してたんですが、そういうやり方だったとは・・・。
DataTable、DataViewで考えてたのですが、DefaultViewでやるんですかぁ・・・。
勉強になります!

下記内容にあるToList()って部分をToArray()に変えたのですが、サイトで調べると同じようで同じじゃないっと・・・。
なにかおかしいのでしょうか?><

foreach(Shot shot in playerShots) 
{ 
   //var result = from invader in Invaders 
   //where invader.Area.Contains(shot.Location) 
   //select invader; 
   //上記内容↑を変換
   List<Invader> result = New List<Invader>();
   foreach(Invader invader in Invaders) 
   {
     if(invader.Area.Contains(shot.Location))
     {
        result.Add(invader);
     }
   }

   //if (result.Count() > 0) 
   if (result.Count > 0)
   {  
      //ToList??
      //Invader shotInvader = result.ToList()[0]; //can only hit one invader!
      Invader shotInvader = result.ToArray()[0];
      this.score += shotInvader.Score; 
      Invaders.Remove(shotInvader); 
 
      soundPlayer.SoundLocation = Path.Combine(Environment.CurrentDirectory, @"..\..\Resources\invaderkilled.wav"); 
      soundPlayer.Load(); 
      soundPlayer.Play(); 
 
      //flag the shot for removal - done in MoveAllShots() 
      shot.removeShotFlag = true; 
   } 
}//end foreach 

引用返信 編集キー/
■59667 / inTopicNo.5)  Re[4]: Varについて
□投稿者/ 魔界の仮面弁士 (2193回)-(2011/06/03(Fri) 11:52:58)
No59651 (ラムダ さん) に返信
> DataTable、DataViewで考えてたのですが
型付 DataSet を使えば、より使いやすくなりますよ。


> DataTable、DataViewで考えてたのですが、DefaultViewでやるんですかぁ・・・。
DefaultView を使わない場合は、

 tbl.DefaultView.Sort = ソート順;
 foreach (DataRowView rowView in tbl.DefaultView)

のところを

 DataView view = new DataView(tbl);
 view.Sort = ソート順;
 foreach (DataRowView rowView in view)

にすれば OK です。
ちなみに Sort プロパティの他、where に相当する RowFilter プロパティもあります。


> 下記内容にあるToList()って部分をToArray()に変えたのですが、
リスト型『 List<T> 』に変換するか、
一次元配列『 T[] 』に変換するかの違いですね。


> //Invader shotInvader = result.ToList()[0]; //can only hit one invader!
> Invader shotInvader = result.ToArray()[0];
今回の場合は result 自体が List<T> なので、先頭項目の取り出しは
 Invader shotInvader = result[0];
とするだけです。わざわざ配列変換してから取り出す必要はありません。

ちなみにこれが Linq であった場合は、先頭項目の取り出しは
 Invader shotInvader = result.First();
もしくは
 Invader shotInvader = result.FirstOrDefault();
のように記述できます。.ToList()[0] よりも効率が良いハズ。
引用返信 編集キー/
■59778 / inTopicNo.6)  Re[5]: Varについて
□投稿者/ ラムダ (6回)-(2011/06/07(Tue) 02:10:03)
追記まで、いつもありがとうございます><
すいません。。。ぜんっぜんわからない部分がでてきて困ってます。。。
varの部分の invaderGroupQuery ってのはグループ名?なんですかねぇ・・・。
groupedInvaders ってのがグループに見えて、 invaderGroupQuery って何のためにあるんだろう・・・。


********下記 元(Var有)********

        private void ReturnFire()
        {
            if (invaderShots.Count() > wave + 1)
                return;

            var invaderGroupQuery = from invader in Invaders
                                    group invader by invader.Location.X into groupedInvaders
                                    select groupedInvaders;

            foreach (var invaderColumn in invaderGroupQuery)
            {
                var invaderQuery = from invader in invaderColumn
                                   orderby invader.Location.Y descending
                                   select invader;

                Invader bottomInvader = invaderQuery.First();

                if (random.Next(10) >= 9 - wave)
                {
                    Point shotLocation = new Point(bottomInvader.Location.X + (bottomInvader.image.Width / 2) - 2/*fudge*/,
                    bottomInvader.Location.Y + bottomInvader.image.Height /*fudge*/);
                    Shot newInvaderShot = new Shot(shotLocation, Direction.Down, boundaries);
                    invaderShots.Add(newInvaderShot);
                }
            }

        }
******** ここまで ********

******** 下記編集途中・・・ ********
        public void invaderShot()
        {
            Dictionary<Point,int> groupedInvaders = new Dictionary<Point,int>();
            foreach (cls_Invaders invader in Invaders)
            {
                if (!groupedInvaders.ContainsValue(invader.Location.X))
                {
                    Point kakunin = new Point(invader.Location.X, invader.Location.Y);
                    groupedInvaders.Add(kakunin, 0);
                    groupedInvaders[invader.Location]++;
                }
            }

            foreach (cls_Invaders invaderColumn in groupedInvaders)
            {
            }
        }
******** ここまで ********

引用返信 編集キー/
■59780 / inTopicNo.7)  Re[6]: Varについて
□投稿者/ shu (759回)-(2011/06/07(Tue) 07:47:04)
No59778 (ラムダ さん) に返信
> 追記まで、いつもありがとうございます><
> すいません。。。ぜんっぜんわからない部分がでてきて困ってます。。。
> varの部分の invaderGroupQuery ってのはグループ名?なんですかねぇ・・・。
> groupedInvaders ってのがグループに見えて、 invaderGroupQuery って何のためにあるんだろう・・・。
invaderGroupQueryは変数ですよ。
gourpedInvadersというのはLocation.Xが同じものを集めたリストです。
それをLocation.X毎にリストにしたものを取得する問い合わせをinvaderGroupQueryという変数に
設定しているんです。
引用返信 編集キー/
■59806 / inTopicNo.8)  Re[7]: Varについて
□投稿者/ ラムダ (7回)-(2011/06/07(Tue) 18:51:59)
2011/06/07(Tue) 18:52:14 編集(投稿者)
なるほどー!
わかりやすい説明ありがとうございます!!

下記のような記述でいいのでしょうか?><

 private void ReturnFire()
        {
            if (invaderShots.Count() > wave + 1)
                return;
            
            Dictionary<Invader,int> groupdInvaders = New Dictionary<Invader,int>();

            foreach(Invader invader in groupdInvaders)
            {
                if (groupInvaders.Contain(invader,invader.Location.X) <== 同じXだったらグループ化
                {
                   groupdInvaders.Add(invader);
                }
            }

            //var invaderGroupQuery = from invader in Invaders
            //                        group invader by invader.Location.X into groupedInvaders
            //                        select groupedInvaders;

            List<Invader> invaderQuery = New List<Invader>;

            DataTable tbl = new DataTable();
            tbl.Columns.Add("Invader", typeof(Invader));
            tbl.Columns.Add("Location_Y", typeof(int));
          
            foreach (Invader invader in groupedInvaders)
            {
                tbl.Rows.Add(invader, invader.Location.Y);
            }
            
            tbl.DefaultView.Sort = "Location_Y DESC";
            foreach (DataRowView rowView in tbl.DefaultView) 
            {
                invaderQuery.Add((Invader)rowView["Invader"]);
            }

            //foreach (var invaderColumn in invaderGroupQuery)
            //{
            //    var invaderQuery = from invader in invaderColumn
            //                       orderby invader.Location.Y descending
            //                       select invader;

                //Invader bottomInvader = invaderQuery.First();
                Invader bottomInvader = invaderQuery[0];

                if (random.Next(10) >= 9 - wave)
                {
                    Point shotLocation = new Point(bottomInvader.Location.X + (bottomInvader.image.Width / 2) - 2/*fudge*/,
                    bottomInvader.Location.Y + bottomInvader.image.Height /*fudge*/);
                    Shot newInvaderShot = new Shot(shotLocation, Direction.Down, boundaries);
                    invaderShots.Add(newInvaderShot);
                }
            }

        }

引用返信 編集キー/
■59829 / inTopicNo.9)  Re[8]: Varについて
□投稿者/ 魔界の仮面弁士 (2205回)-(2011/06/07(Tue) 23:19:54)
No59806 (ラムダ さん) に返信
>>> ********下記 元(Var有)********
Var ではなく
var ですよね?


> 下記のような記述でいいのでしょうか?><
違うと思いますよ。(そもそもコンパイルすら通りませんよね)

new が New になってしまっていますし、第一、Dictionary に
Contain というメソッドはありません。Add 引数の指定方法も違っています。


>  Dictionary<Invader,int> groupdInvaders = New Dictionary<Invader,int>();
>  foreach(Invader invader in groupdInvaders)
>  {
>      if (groupInvaders.Contain(invader,invader.Location.X) <== 同じXだったらグループ化
>      {
>         groupdInvaders.Add(invader);
>      }
>  }
この場合、groupdInvaders は作成直後なので、foreach の中身は 0 件のはずです。
0 個のデータをループさせても、処理が一回も実行されない事は分かりますよね。

何よりも、Location.X をグループ化させようとしているにも関わらず、
Dictionary の Key が int ではなく、Invader になってしまっていますので、
これでは目的を達成できません。


もう一度、落ち着いて考えてみましょう。

改めて原文を見てみると、最初に作るべきは invaderGroupQuery コレクションとなっています。
Linq の内容を追ってみると、
   from invader in Invaders
   group invader by invader.Location.X into groupedInvaders
   select groupedInvaders;
と書かれている事がわかります。
すなわち、「Invaders コレクションを Location.X でグループ化したもの」です。

ゆえに、
 ・データを列挙させるべきは、(groupedInvaders ではなく) Invaders 。
 ・Dictionary の Key は、(Invader ではなく) Location.X すなわち int 値。
 ・Dictionary の 値は、Location.X 毎にリストにしたもの。
です。たとえばこんな感じ。

  // Location.X ごとにグループ化
  Dictionary<int, List<Invader>> invaderGroupQuery = new Dictionary<int, List<Invader>>();
  foreach (Invader invader in Invaders)
  {
      List<Invader> groupedInvaders;
      if (invaderGroupQuery.ContainsKey(invader.Location.X))
      {
          groupedInvaders = invaderGroupQuery[invader.Location.X];
      }
      else
      {
          groupedInvaders = new List<Invader>();
          invaderGroupQuery.Add(invader.Location.X, groupedInvaders);
      }
      groupedInvaders.Add(invader);
  }

---------------
ついでなので、その後も。

  // 「foreach (var invaderColumn in invaderGroupQuery)」に相当
  foreach (KeyValuePair<int, List<Invader>> invaderColumn in invaderGroupQuery)
  {
      // 「var invaderQuery = from invader in invaderColumn select invader;」に相当
      List<Invader> invaderQuery = invaderColumn.Value;

      // 「orderby invader.Location.Y descending」に相当
      invaderQuery.Sort(delegate(Invader a, Invader b)
          { return b.Location.Y.CompareTo(a.Location.Y); });

      // 「Invader bottomInvader = invaderQuery.First();」に相当
      Invader bottomInvader = invaderQuery[0];

      // 後は一緒
      if (random.Next(10) >= 9 - wave)
      {
          // 省略
      }
  }




ただし今回の場合、各列の一番下の Invader が得られれば良いみたいなので、
こんな感じにした方がスマートかも知れません。

  private void ReturnFire()
  {
      if (invaderShots.Count() > wave + 1)
          return;

      Dictionary<int, Invader> invaderColumn = new Dictionary<int, Invader>();
      foreach (Invader invader in Invaders)
      {
          if (!invaderColumn.ContainsKey(invader.Location.X))
          {
              invaderColumn.Add(invader.Location.X, invader);
          }
          else if (invaderColumn[invader.Location.X].Location.Y < invader.Location.Y)
          {
              invaderColumn[invader.Location.X] = invader;
          }
      }

      foreach (KeyValuePair<int, Invader> column in invaderColumn)
      {
          Invader bottomInvader = column.Value;
          if (random.Next(10) >= 9 - wave)
          {
              // 省略
          }
      }
  }



Linq バージョンだとこんな感じかな?

  private void ReturnFire()
  {
      if (invaderShots.Count() > wave + 1)
          return;

      var invaderGroupQuery = Invaders.GroupBy(o => o.Location.X)
              .Select(g => g.First(o => o.Location.Y == g.Max(i => i.Location.Y)));

      foreach (Invader bottomInvader in invaderGroupQuery)
      {
          if (random.Next(10) >= 9 - wave)
          {
              // 省略
          }
      }
  }

引用返信 編集キー/
■59830 / inTopicNo.10)  Re[9]: Varについて
□投稿者/ ラムダ (8回)-(2011/06/08(Wed) 00:34:43)
> Var ではなく
> var ですよね?

var でした、すみません;

> 違うと思いますよ。(そもそもコンパイルすら通りませんよね)
> この場合、groupdInvaders は作成直後なので、foreach の中身は 0 件のはずです。
> 0 個のデータをループさせても、処理が一回も実行されない事は分かりますよね。

まったく通らなかったので修正して通りましたが、おっしゃるとおり 0件 になってしまい詰まってました。。。

>   Dictionary<int, List<Invader>> invaderGroupQuery = new Dictionary<int, List<Invader>>();
リスト化せずに、 Dictionary<int,Invader> invaderGroupQuery = new Dictionary<int,Invader>();
で一度やってみたのですが、 Dictionary<int,Invader> の部分を Dictionary<int,List<Invader>> にするのっていうのは、
List<>にしないと中身を参照できないってことなんでしょうか??

>       List<Invader> groupedInvaders;
>       if (invaderGroupQuery.ContainsKey(invader.Location.X))
>       {
>           groupedInvaders = invaderGroupQuery[invader.Location.X];
>       }
>       else
>       {
>           groupedInvaders = new List<Invader>();
>           invaderGroupQuery.Add(invader.Location.X, groupedInvaders);
>       }
>       groupedInvaders.Add(invader);

groupedInvaders は List<Invader>を参照する為?に設定して、
判定で invaderGroupQuery.ContainsKey 内 invader.Location.X が存在するかを判断して、
true の場合は groupedInvaders に invaderGroupQuery の invader.Location.X を追加。
false の場合は groupedInvaders に List<Invader> で Invaderの変数を全挿入して、
 invaderGroupQuery.Add で invader.Location.X (TKey) groupedInvaders (TValue) を追加。
 groupedInvaders も追加。

で合ってますでしょうか???

毎回、初心者過ぎる質問ですみません。。。

引用返信 編集キー/
■59832 / inTopicNo.11)  Re[10]: Varについて
□投稿者/ 魔界の仮面弁士 (2206回)-(2011/06/08(Wed) 03:16:45)
No59830 (ラムダ さん) に返信
>>    invaderGroupQuery = new Dictionary<int, List<Invader>>();
> リスト化せずに、 Dictionary<int,Invader> invaderGroupQuery = new Dictionary<int,Invader>();
> で一度やってみたのですが、 Dictionary<int,Invader> の部分を Dictionary<int,List<Invader>> にするのっていうのは、

No59780 で、shuさんは「Location.X毎にリストにしたもの」と書いておられますよね。
「Location.X毎のInvader」ではないですよ。


> List<>にしないと中身を参照できないってことなんでしょうか??

Invaders の中には「X が同じで、Y のみが違う Invader」物も含まれています。
ですから Location.X ごとにグループ化した場合、Y の違うInvaderが 1 つ以上見つかるわけです。

ゆえに「group invader by invader.Location.X into groupedInvaders」を再現させるなら、
Dictionary<int, Invader> ではなく、Dictionary<int, List<Invader>> あるいは
Dictionary<int, Invader[]> などで管理する必要があるということです。

たとえば、Invaders コレクション内にある各 Invader が、
 (10, 10)            (30, 10)  (40, 10)
 (10, 20)  (20, 20)            (40, 20)
 (10, 30)            (30, 30)
            (20, 40)
という X, Y 座標を持った 9 個の Invader から構成されていた場合、
  var invaderGroupQuery = from invader in Invaders
                          group invader by invader.Location.X into groupedInvaders
                          select groupedInvaders;
によって抽出されるコレクションは、
 X=10 → (10, 10), (10, 20), (10, 30) の 3件
 X=20 → (20, 20), (20, 40) の 2件
 X=30 → (30, 10), (30, 30) の 2件
 X=40 → (40, 10), (40, 20) の 2件
という形でグループ化されることになります。
そのため、Dictionary<int, List<Invader>> にしたという訳ですね。


とはいえ、その後に続く
  foreach (var invaderColumn in invaderGroupQuery)
  {
      var invaderQuery = from invader in invaderColumn
                         orderby invader.Location.Y descending
                         select invader;
という Linq 式を見れば、実際には 各 X ごとに、Y の降順でソートして、
その先頭要素を(bottomInvader として)取り上げるコードであることが分かります。
すなわち、
 X=10 → (10, 30)
 X=20 → (20, 40)
 X=30 → (30, 30)
 X=40 → (40, 20)
が最終的に取り出せれば良いわけです。
それを考慮し、取り出し方を少し変えてやれば、Dictionary<int, Invader> でも同じ結果を得られます。
実際、私が No59829の後半に書いたコードでは、Dictionary<int, Invader> で集計していますよね。



> groupedInvaders は List<Invader>を参照する為?に設定して、
グループ化集計のためです。上記の例でいえば、
 X=10 → (10, 10), (10, 20), (10, 30) の 3件
の「3件」を核のするためのものです。

> 判定で invaderGroupQuery.ContainsKey 内 invader.Location.X が存在するかを判断して、
> true の場合は groupedInvaders に invaderGroupQuery の invader.Location.X を追加。
違います。ContainsKey で、同じ X 値グループの List が登録済みかどうかを判断し、
登録済みなら、その List に Invader を追加するのです。

> false の場合は groupedInvaders に List<Invader> で Invaderの変数を全挿入して、
これも認識がブレているようです。Invaderの変数を全挿入してはいませんよ。
ContainsKey で 同じ X 値グループの List が登録済みかどうかを判断し、
まだ登録されていなければ、新たにその X 値グループとして、
Invader が 1つだけ登録された List を割り当てています。

引用返信 編集キー/
■59847 / inTopicNo.12)  Re[11]: Varについて
□投稿者/ ラムダ (10回)-(2011/06/08(Wed) 22:21:51)
まったく認識が違っておりました;
下記も上記にない箇所のコーディングでしたが、誤ってました。
魔界の仮面弁士さんのサイトで例外処理としていてできないってことがわかりました・・・が、
下記のような再編集内容であっているのか頭でわかっていません。。。

        private void MoveAllShots(List<cls_Shot> shotList)
        {
            foreach (cls_Shot shot in shotList)
            {
                if (shotList
                shot.Move();
            }

            //shotList.RemoveAll(shot => shot.bol_removeShotFlag == true); // <===この部分を編集
        }
******** 下記 一度目の編集後 ********
        private void MoveAllShots(List<cls_Shot> shotList)
        {
            foreach (cls_Shot shot in shotList)
            {
                if (shot.bol_removeShotFlag)
                {
                    shotList.Remove(shot);
                }
                else
                {
                    shot.Move();
                }
            }
            //shotList.RemoveAll(shot => shot.bol_removeShotFlag == true);
        }
******** 下記 再度編集後 ********
        private void MoveAllShots(List<cls_Shot> shotList)
        {
            foreach (cls_Shot shot in shotList)
            {
                shot.Move();
            }

            shotList.RemoveAll(delegate(cls_Shot shot){return shot.bol_removeShotFlag == true;});
            //shotList.RemoveAll(shot => shot.bol_removeShotFlag == true);
        }

引用返信 編集キー/
■59849 / inTopicNo.13)  Re[12]: Varについて
□投稿者/ shu (768回)-(2011/06/09(Thu) 07:39:02)
2011/06/09(Thu) 07:56:00 編集(投稿者)

No59847 (ラムダ さん) に返信

> foreach (cls_Shot shot in shotList)
> {
> shot.Move();
> }
shot.bol_removeShotFlag のものはこの処理をする必要がないのだから
if自体は残しておいて、removeListにいったんRemoveするものをAddしておいて
ループの後removeList内のものをshotListからRemoveすると良いのではないでしょうか?

あるいは、

shotList1にMove対象をコピーしておいて、
ループ後にshorList = shotList1としてしまうとか。
引用返信 編集キー/
■59894 / inTopicNo.14)  Re[13]: Varについて
□投稿者/ ラムダ (11回)-(2011/06/09(Thu) 21:26:11)
すみません。。元のコーディングが欠けてました;

> shotList1にMove対象をコピーしておいて、
> ループ後にshorList = shotList1としてしまうとか。

なるほど!
shotList.RemoveAll(delegate(cls_Shot shot){return shot.bol_removeShotFlag == true;});
って長く書いててよくわからなくなってました;
ありがとうございます!!

varについてはだいぶわかってきただろうっと思います!
先輩方、本当にありがとうございます!!


追記:まだ違うことで不明なことがあるのでトピックを立てたいと思います;
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -