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
相关推荐
hrrrrb1 小时前
【Spring Security】Spring Security 概念
java·数据库·spring
小信丶1 小时前
Spring 中解决 “Could not autowire. There is more than one bean of type“ 错误
java·spring
周杰伦_Jay2 小时前
【Java虚拟机(JVM)全面解析】从原理到面试实战、JVM故障处理、类加载、内存区域、垃圾回收
java·jvm
未来之窗软件服务5 小时前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
程序员小凯5 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵5 小时前
基本数据类型
java·算法
_extraordinary_6 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
CsharpDev-奶豆哥6 小时前
ASP.NET中for和foreach使用指南
windows·microsoft·c#·asp.net·.net
程序员 Harry6 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java
wxweven7 小时前
校招面试官揭秘:我们到底在寻找什么样的技术人才?
java·面试·校招