if-else问题 [英] if-else problem
本文介绍了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 < 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; } }
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屋!
查看全文