C#中如何简化判断字符串是否为空的If语句?
简化C#字符串非空判断的几种方法
嘿,针对你想简化这段字符串非空判断代码的需求,这里有几个实用且简洁的写法,比原有的if-else清爽多了:
1. 三元条件运算符(最推荐的简化方式)
这是处理这种二元判断最常用的简化手段,直接一行代码就能完成赋值逻辑:
string test = "It's a test"; string test2 = test != "" ? test : "It's null";
如果你的场景里需要同时处理null值(毕竟实际开发中字符串可能为null而非仅仅是空字符串),可以用C#内置的string.IsNullOrEmpty方法来更严谨地判断:
string test2 = string.IsNullOrEmpty(test) ? "It's null" : test;
要是还需要过滤掉全是空白字符的情况(比如" "),就换成string.IsNullOrWhiteSpace:
string test2 = string.IsNullOrWhiteSpace(test) ? "It's null" : test;
2. 空合并运算符(适合侧重处理null的场景)
??运算符会在左侧表达式为null时返回右侧的值,不过它只识别null,不会处理空字符串""。如果你的逻辑只需要处理null,写法会很简洁:
string test2 = test ?? "It's null";
如果要同时处理空字符串和null,可以先把空字符串转换为null再使用??:
string test2 = (test == "" ? null : test) ?? "It's null";
不过这种写法不如三元运算符直观,所以更推荐第一种方法。
关于你提到的Regex和Switch语句
- 用
Regex.IsMatch来判断空字符串完全是大材小用,不仅效率低,还会让代码变得冗余,完全没必要~ - 你提到的SELECT CASE对应C#里的
switch语句,虽然也能实现,但对于这种简单的二元判断,switch反而会让代码更冗长,比如:
string test2; switch (test) { case "": test2 = "It's null"; break; default: test2 = test; break; }
显然不如三元运算符简洁,所以不推荐用在这个场景里。
内容的提问来源于stack exchange,提问作者Aousaf Rashid
相关产品推荐
相关产品推荐

