C# 如果条件带有字符串
简单地说一下:C# 如果条件带有字符串,c#,.net,windows,string,if-statement,C#,.net,Windows,String,If Statement,简单地说一下: string firstline; if (firstline == null) { System.Console.WriteLine("String empty!"); } 理论上,如果“firstline”中没有值,控制台应该输出“stringempty!”?是,这将按照您的预期运行,并且应该打印到控制台。如果没有以下代码,您可能会发现控制台应用程序关闭得太快,无法读取结果 此外,null和“”(或String.Empty)通常表示相同的意思,因此执行此操作的一种
string firstline;
if (firstline == null) {
System.Console.WriteLine("String empty!");
}
理论上,如果“firstline”中没有值,控制台应该输出“stringempty!”?是,这将按照您的预期运行,并且应该打印到控制台。如果没有以下代码,您可能会发现控制台应用程序关闭得太快,无法读取结果 此外,null和“”(或String.Empty)通常表示相同的意思,因此执行此操作的一种更具命令性的方法是:
if(String.IsNullOrEmpty(firstline))
{
Console.WriteLine("String is empty!");
}
这甚至无法编译,因为: 未赋值局部变量“firstline”的使用 当你说你没有得到任何输出,但是程序编译和运行很好,你并没有向我们展示你真正的代码
但是,如果
firstline
不是局部变量,而是周围类的成员变量,它将自动初始化为null
。通常,类的所有成员变量都是用default(T)
初始化的,其中T
是成员变量的类型。您不能在VS中编译时出错:使用未分配的局部变量“firstline”
尝试分配空之前
编辑
或
默认情况下,它们不为null。如果希望默认为空,请使用以下命令:
static string firstline;
static void Main(string[] args)
{
if (firstline == null)
{
System.Console.WriteLine("String empty!");
}
}
但我建议使用这个:
static void Main(string[] args)
{
string firstline = null;
// or this:
//string firstline = String.Empty;
if (String.IsNullOrEmpty(firstline))
{
System.Console.WriteLine("String empty!");
}
}
在这两种情况下,你都可以得到
未赋值局部变量“firstline”的使用
您的代码不正确,使用未分配的局部变量“firstline”。您可以为其指定任何要测试的值。如果要检查它是否为空字符串,更好的方法是:
string firstline = null; //change to "" to test
if (string.IsNullOrEmpty(firstline))
{
System.Console.WriteLine("String empty!");
}
你的术语让人觉得你有点困惑 一个
null
字符串正是缺少值。它不是空字符串,它是一个没有值的字符串
空字符串是长度为零的字符串,“”
或字符串。空
。这不是null
,因为它确实有一个值,但该值的长度为零
通常,您希望将null值和空值视为相同的值,在这种情况下,您可以使用检查
if (string.IsNullOrEmpty(firstline))
{
System.Console.WriteLine("String is null or empty!");
}
这是我的2美分:
if (firstline == (string)null) throw new ArgumentNullException("firstline"); //value is null
if (firstline.Length == 0) throw new ArgumentOutOfRangeException("firstline", "Value is empty"); // string.Empty
我通过使用发现了这一点,因为我没有得到任何输出。是的,它通过了空检查,因为第一行变量已定义,但尚未实例化“使用未分配变量”…也许向我们展示了实际编译的代码。那么,您的问题解决了吗?有问题吗?请确认以下答案之一。嗯,奇怪,我似乎记得一个值,例如==NullOrEmpty,记不清到底是什么困难-1:不正确。它甚至不编译<代码>字符串第一行不等同于
字符串firstline=null代码>因为第一个无效,第二个有效。将downvote更改为upvote-他说的是一个成员变量,我想你也是。如果实际代码“将”使用它访问未分配变量的对象,则会。但在这种情况下,他只是在检查实例。@Igoris:我不理解你的评论。未赋值局部变量的用法总是错误的。@Daniel Hilgarth抱歉,这是一个垃圾示例,它被声明为公共的,我只是在quicklyas中添加了字符串,因为我说过变量的“用法”会引发运行时错误(如果不是通过引用,则编译)。您所说的“未分配局部变量的使用总是错误的”是什么意思。如果您使用未实例化的变量,它将抛出NullReferenceException。“未分配的局部变量的用法始终为false”
if (firstline == (string)null) throw new ArgumentNullException("firstline"); //value is null
if (firstline.Length == 0) throw new ArgumentOutOfRangeException("firstline", "Value is empty"); // string.Empty