C# 常量与变量

在 C# 中,常量和变量是存储数据的基本方式:

复制代码
// 常量:使用 const 关键字声明,必须在声明时初始化,且值不能改变
const double Pi = 3.14159;
const string Message = "Hello, World!";
​
// 变量:存储可以变化的值,需要先声明类型,再赋值
int age;         // 声明整型变量
age = 30;        // 赋值
string name = "John";  // 声明并初始化

C# 数据类型

C# 中的数据类型分为两大类:

值类型

值类型直接存储数据的值,分配在栈上,包括:

cs 复制代码
// 整数类型
byte b = 255;      // 无符号8位整数 (0-255)
short s = 32767;    // 16位整数
int num = 123456;   // 32位整数
long bigNum = 1234567890123;  // 64位整数
​
// 浮点类型
float f = 3.14f;   // 单精度浮点数,需加后缀 f
double d = 3.14159;  // 双精度浮点数
​
// 布尔类型
bool isActive = true;
​
// 字符类型
char c = 'A';      // 存储单个Unicode字符
引用类型

引用类型存储对数据的引用(内存地址),分配在堆上,包括:

cs 复制代码
// 字符串类型
string text = "Hello";  // 不可变的字符序列
​
// 对象类型
object obj = 123;       // 可以引用任何类型的对象
​
// 数组类型
int[] numbers = {1, 2, 3, 4, 5};  // 存储相同类型的多个元素

值类型和引用类型的区别

区别 值类型 引用类型
存储方式 直接存储值 存储对值的引用
内存位置 栈(Stack) 堆(Heap)
复制行为 复制值本身 复制引用(指向同一对象)
默认值 例如:int 默认值为 0 默认为 null
示例类型 int, bool, struct string, object, array

枚举类型

枚举(enum)是一种值类型,用于定义一组命名的常量:

cs 复制代码
// 定义枚举类型
enum DaysOfWeek
{
    Monday,      // 默认值为0
    Tuesday,     // 1
    Wednesday,   // 2
    Thursday,    // 3
    Friday,      // 4
    Saturday,    // 5
    Sunday       // 6
}
​
// 使用枚举
DaysOfWeek today = DaysOfWeek.Monday;
Console.WriteLine(today);  // 输出: Monday

类型转换

类型转换分为隐式转换和显式转换:

cs 复制代码
// 隐式转换:从小范围类型到大范围类型(安全转换)
int a = 100;
long b = a;  // int 可以隐式转换为 long
​
// 显式转换(强制转换):从大范围类型到小范围类型(可能丢失数据)
double x = 3.14;
int y = (int)x;  // 输出: 3(截断小数部分)
​
// 转换方法
string numStr = "123";
int num = int.Parse(numStr);  // 字符串转整数
bool success = int.TryParse(numStr, out int result);  // 安全转换
​
// 引用类型转换
object obj = "Hello";
string str = (string)obj;  // 强制转换
string safeStr = obj as string;  // 安全转换(失败返回 null)

可空类型

可空类型允许值类型存储 null 值,适用于可能没有值的场景:

cs 复制代码
// 声明可空值类型
int? nullableInt = null;  // int 类型可空
DateTime? nullableDate = null;  // DateTime 类型可空
​
// 使用可空类型
if (nullableInt.HasValue)
{
    Console.WriteLine(nullableInt.Value);  // 获取值
}
else
{
    Console.WriteLine("Value is null");
}
​
// 空合并运算符(??)
int value = nullableInt ?? 0;  // 如果 nullableInt 为 null,则返回 0
相关推荐
weixin_4723394624 分钟前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
小毛驴8501 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
枯萎穿心攻击1 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
Eiceblue2 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
好奇的菜鸟3 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
大千AI助手3 小时前
DTW模版匹配:弹性对齐的时间序列相似度度量算法
人工智能·算法·机器学习·数据挖掘·模版匹配·dtw模版匹配
DuelCode4 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社24 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端