方法1
使用逻辑运算符和string.IsNullOrEmpty方法
string myString = "123"; // 假设要检查的字符串 if (!string.IsNullOrEmpty(myString)) { // 字符串不是null,也不是空字符串 }
方法2
使用逻辑运算符和string.IsNullOrWhiteSpace方法(如果还要检查空白字符串,如只包含空格、制表符或换行符的字符串)
string myString ="123"; // 假设这是要检查的字符串 if (!string.IsNullOrWhiteSpace(myString)) { // 字符串不是null,也不是空字符串或仅包含空白字符 }
方法3
使用逻辑运算符和直接比较(只检查空字符串,不检查null)
string myString = "123"; // 假设这是要检查的字符串 if (myString != null && myString != "") { // 字符串不是null,也不是空字符串 }
方法4
使用C# 8.0及更高版本的空合并运算符(null-conditional operator)和逻辑运算符(仅当需要提供一个默认值时使用)
string myString ="123"; // 假设这是要检查的字符串 string nonNullOrEmptyString = myString ?? ""; // 如果myString是null,则nonNullOrEmptyString将被设置为"" if (nonNullOrEmptyString != "") { // 字符串不是空字符串(但可能是null,但在这个例子中已经被转换成了"") }
但是,请注意,上面的方法4只检查了空字符串,并没有检查原始字符串是否为null。如果需要同时检查null和空字符串,最好使用第一种或第二种方法。
测试代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void strFun1() { string myString ="123"; // 假设要检查的字符串 if (!string.IsNullOrEmpty(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串不是null,也不是空字符串"); } myString = null; if (string.IsNullOrEmpty(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串是null或是空字符串"); } myString = ""; if (string.IsNullOrEmpty(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串是null或是空字符串"); } } private void strFun2() { string myString ="123"; // 假设这是要检查的字符串 if (!string.IsNullOrWhiteSpace(myString)) { // 字符串不是null,也不是空字符串或仅包含空白字符 MessageBox.Show("字符串不是null,也不是空字符串或仅包含空白字符"); } myString = null; if (string.IsNullOrWhiteSpace(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串是null或是空字符串或仅包含空白字符"); } myString = ""; if (string.IsNullOrWhiteSpace(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串是null或是空字符串或仅包含空白字符"); } myString = " "; if (string.IsNullOrWhiteSpace(myString)) { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串是null或是空字符串或仅包含空白字符"); } } private void strFun3() { string myString = "123"; // 假设要检查的字符串 if (myString != null && myString != "") { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串不是null,也不是空字符串"); } myString = null; if (myString == null ) { // 字符串是null MessageBox.Show("字符串是null"); } myString = ""; if (myString == "") { // 字符串是空字符串 MessageBox.Show("字符串是空字符串"); } } private void strFun4() { string myString = "123"; // 假设要检查的字符串 string nonNullOrEmptyString = myString ?? ""; // 如果myString是null,则nonNullOrEmptyString将被设置为"" if (nonNullOrEmptyString != null && nonNullOrEmptyString != "") { // 字符串不是null,也不是空字符串 MessageBox.Show("字符串不是null,也不是空字符串"); } if (nonNullOrEmptyString == null) { // 字符串是null MessageBox.Show("字符串是null"); } if (nonNullOrEmptyString == "") { // 字符串是空字符串 MessageBox.Show("字符串是空字符串"); } } private void button1_Click(object sender, EventArgs e) { strFun1(); } private void button2_Click(object sender, EventArgs e) { strFun2(); } private void button3_Click(object sender, EventArgs e) { strFun3(); } private void button4_Click(object sender, EventArgs e) { strFun4(); } } }