Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# - Fatal编程技术网

C# 检查字符串[]时出现空错误?

C# 检查字符串[]时出现空错误?,c#,C#,我的问题是为什么我们需要检查字符串[]中的null错误。 字符串类型不是默认可以接受空值吗?那么为什么我们应该使用null条件运算符标记(?)来检查字符串[]是否包含null 例如,看看这个方法: 它来自于C#和NetFramework4.6这本书 static void TesterMethod(string[] args) { // We should check for null before accessing the array data! Console.WriteLine($"

我的问题是为什么我们需要检查字符串[]中的null错误。 字符串类型不是默认可以接受空值吗?那么为什么我们应该使用null条件运算符标记(?)来检查字符串[]是否包含null

例如,看看这个方法:

它来自于C#和NetFramework4.6这本书

static void TesterMethod(string[] args)
{
  // We should check for null before accessing the array data!
Console.WriteLine($"You sent me {args?.Length} arguments.");
}
我的意思是,如果我们可以为字符串分配null,为什么我们应该检查null错误? 为什么这会引发错误

Console.WriteLine($"You sent me {args.Length} arguments.");

如果
args
为null,则对其调用属性(
Length
)将导致错误。在调用之前,必须确保
args
不为null

args
string
类型的数组,而不是
string
本身

那么为什么我们应该使用null条件运算符标记(?)来检查字符串[]是否包含null


它不包含null,它是null。条件运算符检查数组,而不是数组的内容。

当您尝试访问或更改值为null的字符串时,它可能会引发异常

最近,我正在为学校开发一个联系人列表应用程序,在尝试通过for-Each循环打印时,我遇到了字符串数组中空值的错误(我使用的是VB.NET,但在大多数NetFramework中的概念都是相同的)。循环进行时,它将搜索一个数组以打印所选联系人的信息。但是,如果达到空值,循环将停止,从而终止应用程序


所以,这是一种情境。如果您想确保意外事件不会过早停止您的程序,最好尝试使用null异常以防万一。但是,如果您的程序可以按预期运行,并且用户不能意外地破坏它,那么您可能不需要进行检查

在本例中,我们不检查字符串数组是否包含null,而是检查数组是否为null。如果我们不进行检查,
args.Length
将失败,因为这将转换为
null.Length
,因为
string
string[]
是不同的东西。两者都可以是
null
。如果您试图从空引用中读取
.Length
,您将得到一个
NullReferenceException
,这里的重复标志是错误的。注意:上面的代码没有检查数组是否包含空字符串。检查数组是否为空。您应该注意,
检查的是变量,而不是变量中的项目。变量中是否有内容并不重要。这是关于所谓的财产,并补充说,这可能会混淆人们。这不是我的意思。OP将
与“检查数组中的每个项目以确保其不为空”@CamiloTerevinto OK混淆。{null}和{}之间有区别吗?是的,我得到了它,我得到了错误,因为我访问了null的属性,而不是null本身。字符串可以是“”,但仍有值,但属性null不同