Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果条件带有字符串_C#_.net_Windows_String_If Statement - Fatal编程技术网

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