1

私はこのコードを持っています:

// Image one : first row
user = ReturnUser(pictureBoxUpOne);
if (user != null)
{
     usersFirstRow.Add(user);
     user = null;
}
// Image two : first row
user = ReturnUser(pictureBoxUpTwo);
if (user != null)
{
     usersFirstRow.Add(user);
     user = null;
}

それは私が持っている画像ごとに数回繰り返されています。だから私はそれを避ける方法があるのだろうかと思っていました:

if (user != null)

そして私がするのと同じ行で

usersFirstRow.Add(user); 

最適化されたifsのように、nullでない場合にのみ追加します。

4

5 に答える 5

5

コードをリファクタリングして、画像ボックスのリストを受け取る関数にします。

private void MyMethod(List<PictureBox> pictureBoxes)
{
    foreach (var pictureBox in pictureBoxes)
    {
        var user = ReturnUser(pictureBox);
        if (user != null)
        {
             usersFirstRow.Add(user);
             // This line not needed: user = null; 
        }
    }
}

List<PictureBox> pictureBoxes = 
    new List<PictureBox>() { pictureBoxUpOne, pictureBoxUpTwo }

MyMethod(pictureBoxes);
于 2013-01-09T09:22:41.063 に答える
4

(LINQに少し声をかけるだけです。2つの画像ボックスについては、コードをそのままにしておくと思いますが、変数の再利用を最小限に抑えるために変数名を変えて、nullの割り当てを完全に排除します。YMMV 。)

var pictureBoxes = new [] { pictureBoxUpOne, pictureBoxUpTwo /* etc */ };
userFirtRow.AddRange(pictureBoxes
    .Select(pb => ReturnUser(pb))
    .Where(u => u != null));
于 2013-01-09T09:25:07.143 に答える
2

メソッドを宣言すると、これらのifステートメントが不足する可能性があります。

private void AddIfNotNull(YourUserObject user)
{
   if (user != null)
   {
       usersFirstRow.Add(user);
   }
}
于 2013-01-09T09:24:57.080 に答える
1

これを実行できるように、ピクチャーボックスをリストまたはコンテナーに入れます。

foreach pictureBox in someContainer.ChildControls
{
    var user = ReturnUser(pictureBox);
    if (user != null)
    {
        usersFirstRow.Add(user);
    }
}
于 2013-01-09T09:24:32.197 に答える
1

私はそれを関数でラップします:

public void AddUserIfNotNull(User user) {
    if (user != null)
        usersFirstRow.Add(user);
}

// ... then ...
public void IteratePictureBoxesAndAddUsers(List<PictureBox> pictureBoxes) { // <-- feel free to rename
    foreach (PictureBox p in pictureBoxes) {
        AddUserIfNotNull(ReturnUser(p));
    }
}

..繰り返しになりますが、私はあなたがやろうとしていることの要点を完全に見逃しているかもしれません。

于 2013-01-09T09:24:35.673 に答える