string.format效率与条件间距

时间:2011-08-16 16:58:54

标签: c# .net string.format

格式化全名的绝对最快方法是什么?中间名和后缀可能为null或为空?

string fullname = string.Format("{0} {1} {2} {3}", 
                                FName, 
                                MI, 
                                LName, 
                                Suffix);

这个问题是如果MI或后缀为空,那么我有两个空格。

我可以用这个做第二遍:

fullname = fullname.Replace("  ", " ");

或者我可以用这样的东西制作字符串:

string fullname = string.Format("{0}{1} {2}{3}", 
                        FName, 
                        string.IsNullOrEmpty(MI) ? "" : " " + MI, 
                        LName, 
                        string.IsNullOrEmpty(Suffix) ? "" : " " + Suffix);

有更好的选择吗? 最快是重要的事情。

2 个答案:

答案 0 :(得分:4)

我会这样做:

var parts = new[] { FName, MI, LName, Suffix };
string fullName = string.Join(" ", parts.Where(s => !string.IsNullOrWhiteSpace(s)));

这可能不是最快的解决方案,但它清楚地说明了发生了什么。

答案 1 :(得分:1)

首先检查null-or-empty,然后为每个代码编写专门的代码。我希望直接在char[]缓冲区上工作的速度比string.Format或StringBuilder快。

但我觉得奇怪的是,格式化名称是应用程序中的性能瓶颈。即使格式化几百万个名字也不应该花那么长时间。