有效地将空字符串替换为数组中的null

use*_*559 0 c# linq arrays

我想知道用空值替换数组中空字符串的最有效方法.

我有以下数组:

string[] _array = new string [10];
_array[0] = "A";
_array[1] = "B";
_array[2] = "";
_array[3] = "D";
_array[4] = "E";
_array[5] = "F";
_array[6] = "G";
_array[7] = "";
_array[8] = "";
_array[9] = "J";
Run Code Online (Sandbox Code Playgroud)

我目前正在通过以下方式替换空字符串:

for (int i = 0; i < _array.Length; i++)
{
    if (_array[i].Trim() == "")
    {
        _array[i] = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

它在小型数组上工作正常,但我正在追逐一些在执行任务时效率最高的代码,因为我正在使用的数组可能要大得多,我会一遍又一遍地重复这个过程.

是否有linq查询或更高效的东西?

Mar*_*zek 6

你可能会考虑换_array[i].Trim() == ""string.IsNullOrWhitespace(_array[i]),以避免新的字符串分配.但是,你可以做的就是让它更快并且仍然保持顺序.LINQ不会比for循环更快.

您可以尝试使您的处理并行,但这似乎是一个更大的变化,因此您应该评估在您的方案中是否可以.

Parallel.For(0, _array.Length, i => {
    if (string.IsNullOrWhitespace(_array[i]))
    {
        _array[i] = null;
    }
});
Run Code Online (Sandbox Code Playgroud)