在C#中,要判断一个字符串是否不等于空(即它既不是null也不是空字符串""),方法有如下几种,如下。
方法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();
}
}
}