首页  >  文章  >  后端开发  >  C# 可空字符串

C# 可空字符串

WBOY
WBOY原创
2024-09-03 15:22:04631浏览

在C#中,变量有两种类型:值类型和引用类型。值类型变量不能赋 null,而引用类型变量可以赋 null。由于字符串是引用类型,因此它可以为 null。在本主题中,我们将学习 C# Nullable String。

要将 null 分配给值类型,我们需要使用 Nullable;结构。可空类型只能与值类型一起使用,不能与引用类型一起使用。因此,我们不能将 nullable 与字符串一起使用。我们可以存储可空值而不是引用类型来保存空值。

语法及解释

将 null 赋给字符串变量的语法如下:

string str = null;

这里,str是字符串类型的变量,‘null’是用于指定null值的关键字。在上面的语句中,我们直接将 null 赋给 string,因为它是引用类型,可以保存 null 值。

可为空 struct 会将 null 分配给值类型。其语法如下:

Nullable<dataType> variableName = null;

Nullable 类型的另一种使用方式如下:

dataType? variableName = null;

上面两条语句中的dataType是任意值类型数据类型,variableName是用户自定义赋予变量的名称。

如何在 C# 中使用 Nullable 类型和 null 字符串?

C# 中的 Nullable 类型将 null 值分配给 int、float、bool 等类型的值类型变量,因为它们不能存储 null 值。另一方面,我们不能将 nullable 与字符串或任何其他引用类型变量一起使用,因为它可以直接存储 null 值。

可空类型只不过是 struct System.Nullable 的一个实例;其中 T 表示数据类型的值类型。例如,在可空类型 float 中,我们可以存储“true”、“false”和“null”。我们可以通过下面给出的语句来理解这一点:

//下面的语句是有效的,因为我们可以将 null 存储在可空的 bool

Nullable<bool> boolVal = null;

//下面的语句无效,因为我们不能将 null 存储在 bool 类型的变量中

bool boolVal = null;

当我们使用上面的语句时,我们会收到一条错误消息:“无法将 null 转换为 bool,因为它是不可为 null 的值类型。”

创建可为空类型的另一种方法是使用‘?’运算符,如下所示:

bool? boolVal = null;

现在,要访问可为空类型的值,我们需要使用 GetValueOrDefault() 方法。借助此方法,如果值不为空,我们将获得原始分配的值。另一方面,如果值为空,我们将得到默认值零。

除此之外,我们还可以使用 Nullable.HasValue 来检查对象是否已被赋值。如果该对象已被赋值,则如果该对象不包含任何值,则返回true。

我们不能将可空类型与“var”一起使用,也不能使用嵌套的可空类型;它会给我们一个编译时错误。

现在我们来谈谈C#中的空字符串。我们可以在C#中直接给字符串赋null,用‘string. Empty’只读字段,代表字符串为空。

我们不能对空字符串调用任何方法,也不能对空字符串使用任何字符串属性,而我们可以对空字符串执行相同的操作。例如,如果我们将使用字符串检查空字符串的长度。 Length 属性,那么我们将得到的结果为零,而如果我们检查空字符串的长度,那么我们将得到一个运行时异常,提示“System.NullReferenceException:未将对象引用设置为对象的实例”。当我们尝试对空字符串调用任何字符串方法时,我们将得到相同的异常。这是因为空字符串不是 System 的实例。细绳。我们可以借助以下陈述来理解这一点:

空字符串示例:

string str = string.Empty;
int a = str.Length; //the result of this statement will be zero

空字符串示例:

string str = null;
int a = str.Length; //this statement will give NullReferenceException

C# 可空字符串的示例

下面提到了不同的示例:

示例#1

示例展示如何创建可为 null 的类型。

代码:

using System;
namespace ConsoleApp4
{
public class Program
{
public static void Main()
{
try
{
//defining nullable type for int
Nullable<int> intVal1 = null;
int result1;
Nullable<int> intVal2 = 53;
int result2;
//using GetValueOrDefault()
//to get value from nullable type
result1 = intVal1.GetValueOrDefault();
result2 = intVal2.GetValueOrDefault();
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch(Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}
}

输出:

C# 可空字符串

示例#2

例如,它使用“?”运算符创建一个可以为 null 的类型,并使用 HasValue 检查它是否包含值。

代码:

using System;
public class Program
{
public static void Main()
{
try
{
//defining nullable type
//using '?' operator
int? intVal1 = null;
bool result1;
int? intVal2 = 53;
bool result2;
//using HasValue to check
// if the object has been assigned a value or not
result1 = intVal1.HasValue;
result2 = intVal2.HasValue;
Console.WriteLine("Integer having null: {0}", result1);
Console.WriteLine("Integer having value: {0}", result2);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
Console.ReadLine();
}
Console.ReadLine();
}
}

输出:

C# 可空字符串

示例#3

使用 IsNullOrEmpty() 方法检查字符串是否为 null、空或包含值的示例。

代码:

using System;
public class Program
{
public static void Main()
{
string str1 = null;
string str2 = string.Empty;
string str3 = "Learning C#";
Console.WriteLine("str1 is null or empty: {0}", string.IsNullOrEmpty(str1));
Console.WriteLine("str2 is null or empty: {0}", string.IsNullOrEmpty(str2));
Console.WriteLine("str3 is null or empty: {0}", string.IsNullOrEmpty(str3));
Console.ReadLine();
}
}

输出:

C# 可空字符串

结论

在C#中,int、float、bool、double等类型的值类型变量不能存储空值,而string等引用类型变量可以存储空值。要在值类型变量中存储空值,我们可以使用 Nullable;结构。

以上是C# 可空字符串的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:C# Memory Leak下一篇:C# finally