if-else问题 [英] if-else problem

查看:84
本文介绍了if-else问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 私有 字符串 [] [] listview2string(ListView listview, 字符串 [] baslik)
{
    字符串 [] [] Tablo;
    如果(listview.SelectedItems.Count >   0 )
    {
        ListView.SelectedListViewItemCollection item =  ListView.SelectedListViewItemCollection(listview);
        tablo =  字符串 [(item.Count)+  1 ] [];
         for ( int  i =  1 ; i <  tablo.GetLength( 0 ); i ++)
        {
            tablo [i] =  字符串 [item [i- 1 ].SubItems.Count];
             for ( int  k =  0 ; k <  item [i- 1 ].SubItems.Count; k ++)
            {
                tablo [i] [k] = item [i- 1 ].SubItems [k] .Text;
            }
        }
    }
    其他
    {
        ListView.ListViewItemCollection item =  ListView.ListViewItemCollection(listview);
        tablo =  字符串 [(item.Count)+  1 ] [];
         for ( int  i =  1 ; i <  tablo.GetLength( 0 ); i ++)
        {
            tablo [i] =  字符串 [item [i- 1 ].SubItems.Count];
             for ( int  k =  0 ; k <  item [i- 1 ].SubItems.Count; k ++)
            {
                tablo [i] [k] = item [i- 1 ].SubItems [k] .Text;
            }
        }
    }
    tablo [ 0 ] = baslik;
    返回标签;
} 


你好,
我是夏普新手,
我如何缩短这个if-else块.谢谢.

解决方案

除非我没有错误地阅读它,否则这两种情况都是相同的

  for ( int  i =  1 ;我<  tablo.GetLength( 0 ); i ++)
{
    tablo [i] =  字符串 [item [i- 1 ].SubItems.Count];
     for ( int  k =  0 ; k <  item [i- 1 ].SubItems.Count; k ++)
    {
        tablo [i] [k] = item [i- 1 ].SubItems [k] .Text;
    }
} 



获取您的收藏,然后对每个收藏进行

 ListViewItem []项目=新的ListViewItem [listview.SelectedItems.Count ==  0 ?
listview.Items.Count:listview.SelectedItems.Count];

如果(listview.SelectedItems.Count ==  0 )
{
  listView.SelectedItems.CopyTo(items, 0 );
}
其他
{
  listView.Items.CopyTo(items, 0 );
}

 for ( int  i =  1 ; i & lt; tablo.GetLength( 0 ); i ++)
{
    tablo [i] =新字符串[item [i- 1 ].SubItems.Count];
     for ( int  k =  0 ; k & lt; item [i- 1 ].SubItems.Count; k ++)
    {
        tablo [i] [k] = item [i- 1 ].SubItems [k].文本;
    }
} 



因为传入的ListView对象已经包含了这些集合,所以不必创建新的集合.

 字符串 [] [] Tablo;

私有 字符串 [] [] listview2string(ListView listview, string  [] baslik)
{
    如果(listview.SelectedItems.Count >   0 )
    {
        ListView.SelectedListViewItemCollection item =  ListView.SelectedListViewItemCollection(listview);
        DoManipulation(item);
    }
    其他
    {
        ListView.ListViewItemCollection item =  ListView.ListViewItemCollection(listview);
        DoManipulation(item.Count);
    }
    tablo [ 0 ] = baslik;
    返回标签;
}
私有 字符串 [] [] DoManipulation(ListViewItem项目)
{
     tablo =  字符串 [(item.Count)+  1 ] [];
      for ( int  i =  1 ; i <  tablo.GetLength( 0 ); i ++)
     {
         tablo [i] =  字符串 [item [i- 1 ].SubItems.Count];
          for ( int  k =  0 ; k <  item [i- 1 ].SubItems.Count; k ++)
         {
             tablo [i] [k] = item [i- 1 ].SubItems [k] .Text;
         }
     }
    tablo [ 0 ] = baslik;
    返回标签;
} 


可以对其进行更多重构.


这有什么用?

 私有 字符串 [] [] ListViewToString(ListView listview,字符串 [] baslik)
        {
            字符串 [] _itemList = ;
            如果(listview.SelectedItems.Count >   0 )
            {
                _itemList =  字符串 [listview.SelectedItems.Count];
                listview.SelectedItems.CopyTo(_itemList, 0 );
            }
            其他
            {
                _itemList =  字符串 [listview.SelectedItems.Count];
                listview.Items.CopyTo(_itemList, 0 );
            }
            字符串 [] []表;
            表格=  字符串 [(item.Count)+  1 ] [];
             for ( int  i =  1 ; i <  table.GetLength( 0 ); i ++)
            {
                table [i] =  字符串 [item [i- 1 ].SubItems.Count];
                 for ( int  k =  0 ; k <  item [i- 1 ].SubItems.Count; k ++)
                {
                    table [i] [k] = item [i- 1 ].SubItems [k] .Text;
                }
            }
            table [ 0 ] =巴斯利克;
            返回表;
        } 


private string[][] listview2string(ListView listview, string[] baslik)
{
    string[][] tablo;
    if (listview.SelectedItems.Count > 0)
    {
        ListView.SelectedListViewItemCollection item = new ListView.SelectedListViewItemCollection(listview);
        tablo = new string[(item.Count) + 1][];
        for (int i = 1; i < tablo.GetLength(0); i++)
        {
            tablo[i] = new string[item[i - 1].SubItems.Count];
            for (int k = 0; k < item[i - 1].SubItems.Count; k++)
            {
                tablo[i][k] = item[i - 1].SubItems[k].Text;
            }
        }
    }
    else
    {
        ListView.ListViewItemCollection item = new ListView.ListViewItemCollection(listview);
        tablo = new string[(item.Count) + 1][];
        for (int i = 1; i < tablo.GetLength(0); i++)
        {
            tablo[i] = new string[item[i - 1].SubItems.Count];
            for (int k = 0; k < item[i - 1].SubItems.Count; k++)
            {
                tablo[i][k] = item[i - 1].SubItems[k].Text;
            }
        }
    }
    tablo[0] = baslik;
    return tablo;
}


Hello,
I am new to c sharp,
How can i shorten this if-else block. Thanks.

解决方案

Unless I''m not reading it incorrectly this is the same in both cases

for (int i = 1; i < tablo.GetLength(0); i++)
{
    tablo[i] = new string[item[i - 1].SubItems.Count];
    for (int k = 0; k < item[i - 1].SubItems.Count; k++)
    {
        tablo[i][k] = item[i - 1].SubItems[k].Text;
    }
}



Get your collection, then do the for each

ListViewItem[] items = new ListViewItem[listview.SelectedItems.Count == 0 ?
listview.Items.Count : listview.SelectedItems.Count];

if(listview.SelectedItems.Count == 0)
{
  listView.SelectedItems.CopyTo(items, 0 );
}
else
{
  listView.Items.CopyTo(items,0);
}

for (int i = 1; i &lt; tablo.GetLength(0); i++)
{
    tablo[i] = new string[item[i - 1].SubItems.Count];
    for (int k = 0; k &lt; item[i - 1].SubItems.Count; k++)
    {
        tablo[i][k] = item[i - 1].SubItems[k].Text;
    }
}



It is unnecessary to create new collections since the ListView object that is being passed in already contains these collections.


What about this, starting with a small change of moving the common method out.

string[][] tablo;

private string[][] listview2string(ListView listview, string[] baslik)
{    
    if (listview.SelectedItems.Count > 0)
    {
        ListView.SelectedListViewItemCollection item = new ListView.SelectedListViewItemCollection(listview);
        DoManipulation(item);
    }
    else
    {
        ListView.ListViewItemCollection item = new ListView.ListViewItemCollection(listview);
        DoManipulation(item.Count);
    }
    tablo[0] = baslik;
    return tablo;
}
private string[][] DoManipulation(ListViewItem item)
{     
     tablo = new string[(item.Count) + 1][];
     for (int i = 1; i < tablo.GetLength(0); i++)
     {
         tablo[i] = new string[item[i - 1].SubItems.Count];
         for (int k = 0; k < item[i - 1].SubItems.Count; k++)
         {
             tablo[i][k] = item[i - 1].SubItems[k].Text;
         }
     }
    tablo[0] = baslik;
    return tablo;
}


This can be refactored more.


what about this?

private string[][] ListViewToString(ListView listview, string[] baslik)
        {
            string[] _itemList = null;
            if (listview.SelectedItems.Count > 0)
            {
                _itemList = new string[listview.SelectedItems.Count];
                listview.SelectedItems.CopyTo(_itemList, 0);
            }
            else
            {
                _itemList = new string[listview.SelectedItems.Count];
                listview.Items.CopyTo(_itemList, 0);
            }
            string[][] table;
            table = new string[(item.Count) + 1][];
            for (int i = 1; i < table.GetLength(0); i++)
            {
                table[i] = new string[item[i - 1].SubItems.Count];
                for (int k = 0; k < item[i - 1].SubItems.Count; k++)
                {
                    table[i][k] = item[i - 1].SubItems[k].Text;
                }
            }
            table[0] = baslik;
            return table;
        }


这篇关于if-else问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆