C# 检查字符串[]时出现空错误?
我的问题是为什么我们需要检查字符串[]中的null错误。 字符串类型不是默认可以接受空值吗?那么为什么我们应该使用null条件运算符标记(?)来检查字符串[]是否包含null 例如,看看这个方法: 它来自于C#和NetFramework4.6这本书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($"
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不同