我遇到了一个非常有趣的问题。总之,我了解到empty
和null
是两回事。
我目前正在创建一个构建器,它可以存储两个List<string>
s。
public ValueList(List<string> firstList, List<string> secondList) {
for (int i = 0; i < firstList.Count; i++) {
// Checks for nulls.
if(firstList[i] == null){
_firstList.Add("null");
}else if (secondList[i] == null){
_secondList.Add("null");
}else{
_firstList.Add(firstList[i].ToString());
_secondList.Add(secondList[i].ToString());
}
}
}
有时这个构造函数会读取Excel文件,而在任何空白方块中,我使用的另一个脚本将在null
值中解析。 null
值会完全破坏我的脚本,而不是.Add()
任何内容。
所以我试着放入我的空检查条件。如果该特定索引为null,则我们添加"null"
字符串。
但是,null
继续破坏我的脚本。
我想知道是否有更优雅和万无一失的方法来解决这个问题?我想我也试过了.Equals(null)
,但这根本没有解决问题。
答案 0 :(得分:3)
正确的逻辑是
for (int i = 0; i < firstList.Count; i++) {
// Checks for nulls.
if(firstList[i] == null){
_firstList.Add("null");
}
else {
_firstList.Add(firstList[i].ToString());
}
if (secondList[i] == null){
_secondList.Add("null");
}
else{
_secondList.Add(secondList[i].ToString());
}
}
但你可以参加Linq投影:
_firstList = firstList.Select(s => s ?? "null").ToList();
_secondList = secondList.Select(s => s ?? "null").ToList();
修改强>
由于您 想要存储nulls
,您只需要不要致电ToString
:
for (int i = 0; i < firstList.Count; i++) {
_firstList.Add(firstList[i]);
_secondList.Add(secondList[i]);
}