在C#中,变量有两种类型:值类型和引用类型。值类型变量不能赋 null,而引用类型变量可以赋 null。由于字符串是引用类型,因此它可以为 null。在本主题中,我们将学习 C# Nullable String。
要将 null 分配给值类型,我们需要使用 Nullable
语法及解释
将 null 赋给字符串变量的语法如下:
string str = null;
这里,str是字符串类型的变量,‘null’是用于指定null值的关键字。在上面的语句中,我们直接将 null 赋给 string,因为它是引用类型,可以保存 null 值。
可为空
Nullable<dataType> variableName = null;
Nullable 类型的另一种使用方式如下:
dataType? variableName = null;
上面两条语句中的dataType是任意值类型数据类型,variableName是用户自定义赋予变量的名称。
C# 中的 Nullable 类型将 null 值分配给 int、float、bool 等类型的值类型变量,因为它们不能存储 null 值。另一方面,我们不能将 nullable 与字符串或任何其他引用类型变量一起使用,因为它可以直接存储 null 值。
可空类型只不过是 struct System.Nullable
//下面的语句是有效的,因为我们可以将 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
下面提到了不同的示例:
示例展示如何创建可为 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(); } } }
输出:
例如,它使用“?”运算符创建一个可以为 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(); } }
输出:
使用 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#中,int、float、bool、double等类型的值类型变量不能存储空值,而string等引用类型变量可以存储空值。要在值类型变量中存储空值,我们可以使用 Nullable
以上是C# 可空字符串的详细内容。更多信息请关注PHP中文网其他相关文章!