2024-01-08 · C# 基础 · 学习笔记

C# 变量与类型入门

刚开始学 C# 的时候,最容易搞混的是值类型和引用类型。int、double、bool、char、decimal 这些是值类型,赋值时会在栈上复制一份值;string、数组、自定义 class 是引用类型,赋值时复制的是内存地址,两个变量指向同一个对象。这个区别在传参、比较相等性、集合存储时都会体现出来。

自己第一次踩坑是写一个方法,传了一个 class 对象进去改了属性,结果外面的对象也跟着变了,当时以为是编译器 bug。后来才明白引用类型就是这样。值类型传参则不会影响外部变量。var 关键字不是动态类型(那是 dynamic),编译器会在编译期自动推断类型,写起来方便但右边类型不明显时最好显式声明。

初学建议:1) 所有字符串用 string,不要用 StringBuilder 除非大量拼接;2) 浮点数用 decimal 表示金额,不要用 double;3) 可空值类型用 int? 而不是 int 加判断。变量命名用小驼峰,常量用 PascalCase。

代码示例

// 值类型:赋值时复制值
int a = 10;
int b = a;
b = 20;
Console.WriteLine(a); // 10,不受 b 影响

// 引用类型:赋值时复制引用
var p1 = new Person { Name = "Tom" };
var p2 = p1;
p2.Name = "Jerry";
Console.WriteLine(p1.Name); // Jerry,p1 也变了

class Person { public string Name { get; set; } = ""; }
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。