C# 值类型与引用类型 null与可空类型

简介: 本文目录1. 值类型与引用类型2. null的含义3. 可空类型

1. 值类型与引用类型

值类型就是内存中某处位置保存的值,该值具备实际意义。比如int i=10;内存中的10就是i的值。


引用类型也是内存中保存的值,但是该值指向内存中其他位置。比如String str=“123”。str保存的实际上是"123"在内存中存储的位置的地址,只是我们在使用的时候C#语言知道str是引用类型就把对应的"123"取出来给我们用。


2. null的含义

值类型总是包含一个值,所以不存在null。引用类型的值可以是null,此时表示该引用类型还未指向具体的空间,也就是还没包含值。


3. 可空类型

可控类型是指值可以为null的值类型,有点拗口,例如:

      static void Main(string[] args)
        {
            int? i = null;
            if (i == null)
                Console.WriteLine("i is null");
        }
定义一个int?类型的i,此处int?表示可空类型。
相关文章
|
1天前
|
JSON C# 数据格式
【Azure Function】C#独立工作模式下参数类型 ServiceBusReceivedMessage 无法正常工作
Cannot convert input parameter 'message' to type 'Azure.Messaging.ServiceBus.ServiceBusReceivedMessage' from type 'System.String'.
86 73
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
43 3
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
75 1
|
3月前
|
C#
C# 可空类型(Nullable)
C# 单问号 ? 与 双问号 ??
65 12
|
2月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
26 0
|
4月前
|
存储 Java C#
C# 中的值类型与引用类型
在 C# 编程中,值类型和引用类型的区别至关重要,直接影响内存管理、性能优化及编程模式选择。值类型直接存储数据(如 `int`、`float`),而引用类型存储数据的引用地址(如 `class`、`string`)。值类型的赋值涉及数据复制,适合小数据量;引用类型仅复制引用,适合大数据量处理但需关注垃圾回收。本文通过具体代码示例详细解析二者的定义、存储方式及性能影响,并提供实战案例分析及易错点避免方法,帮助读者更好地理解和应用。
106 2
|
5月前
|
JavaScript
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
77 4
|
5月前
|
程序员 C#
C# 语言类型全解
C# 语言类型全解
36 0
|
5月前
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
|
5月前
|
传感器 开发框架 JSON
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
248 0