我想将Listbox项目复制到StringCollection.如果列表框项目包含空字符串,则忽略
我为什么这样做:
foreach (string item in lstModelUsers.Items)
{
if (string.IsNullOrEmpty(item))
continue;
else
Options.Default.ModelRemoveUsers.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
但不是这样的:
foreach (string item in lstModelUsers.Items)
string.IsNullOrEmpty(item)
? continue
: Options.Default.ModelRemoveUsers.Add(item);
Run Code Online (Sandbox Code Playgroud)
虽然两者看起来都相等,但内联if语句会生成语法错误.
什么是最佳做法?
你不能像这样使用条件运算符.它只接受表达式作为其操作数.您的代码无法编译,因为continue它只能用作语句而不能用作表达式.
更好的方法是否定if表达式,以便您不需要continue:
foreach (string item in lstModelUsers.Items)
{
if (!string.IsNullOrEmpty(item))
{
Options.Default.ModelRemoveUsers.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用Where:
var itemsToAdd = lstModelUsers.Items
.Cast<string>()
.Where(item => !string.IsNullOrEmpty(item));
foreach (string item in itemsToAdd)
{
Options.Default.ModelRemoveUsers.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
如果你很幸运,你甚至可能发现它ModelRemoveUsers有一个AddRange方法,那么你根本就不需要循环:
var itemsToAdd = lstModelUsers.Items
.Cast<string>()
.Where(item => !string.IsNullOrEmpty(item));
Options.Default.ModelRemoveUsers.AddRange(itemsToAdd);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |