.Add(null)会破坏我的列表<string>。我想添加一个条件来使用字符串</string>重新生成null

时间:2014-02-04 22:05:45

标签: c# null

我遇到了一个非常有趣的问题。总之,我了解到emptynull是两回事。

我目前正在创建一个构建器,它可以存储两个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),但这根本没有解决问题。

1 个答案:

答案 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]);
    }