C# 变量与常量详解:数据类型、内存原理及输入输出

月亮慢半拍
月亮慢半拍
发布时间:2026-10-16| 3人浏览过
原创

C# 变量是存储数据的基本单元,常量使用 const 声明且不可修改。理解 int、double、string 等数据类型的特性,掌握值类型(栈)与引用类型(堆)的内存分配机制,是编写健壮 C# 程序的基础。

变量操作与声明

在 C# 中,要存储一个数值需要遵循两步:先声明变量的数据类型和名称,再为其赋予具体的值。C# 是强类型语言,常见的内置基本类型包括:

  • int:整型,用于存储不带小数点的数字。例如 int a = 50;
  • double:双精度浮点型,用于存储带小数点的数字。例如 double b = 3.14;
  • string:字符串类型,用于存储文本,必须包裹在双引号内。例如 string c = "Hello";

第1步:变量声明与赋值

目的:在内存中开辟空间并存储数据。
代码示例:

using System;
namespace VariableDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 分开声明与赋值
            int a;
            a = 50; 
            // 注意:int 不能直接赋值为小数 (a=3.14) 会导致编译错误
            Console.WriteLine(a);

            double b = 3.14;
            Console.WriteLine(b);

            // 自动类型转换:整数可以安全转换为 double
            double d = 10;
            Console.WriteLine(d);

            // 声明同时赋值
            string name = "This is a string";
            Console.WriteLine(name);

            // 一次声明多个相同类型的变量
            string firstName = "Hello", lastName = "World";
            Console.WriteLine(firstName + " " + lastName);
        }
    }
}

第2步:赋值运算与更新

赋值运算符为 =。变量具有可变性,重新赋值后,原有的旧值将被覆盖并从内存中移除。例如:

int score = 80;
score = 95; // 此时内存中 score 的值从 80 变为 95

常量的定义与作用域

常量是指在程序运行期间其值不能被改变的标识符。定义常量时必须使用 const 关键字,并且必须在定义时进行初始化,赋值后严禁修改。

class Program
{
    static void Main()
    {
        const Double pi = 3.14159; // 定义常量
        const int MaxUsers = 100;
        
        // pi = 3.14; // 错误!编译报错,常量不可二次赋值
        double radius = 5.0;
        Console.WriteLine($"圆的周长: {2 * pi * radius}");
    }
}

局部变量的作用域

变量的生命周期和作用域通常由包含它的花括号 { } 决定。局部变量(在方法内部声明的变量)仅在该方法的执行过程中有效,一旦方法结束或跳出花括号范围,该变量将不再可访问。

特殊符号 @ 的作用

在 C# 中,@ 符号主要用于标识符和字符串字面量中:

  1. 作为原始字符串前缀:在字符串前添加 @ 可以将普通字符串转换为逐字字符串(Verbatim String)。在此模式下,转义字符(如 \n, \t)会被忽略,原样输出。
    // 普通字符串:\n 会被识别为换行
    Console.Write("第一行\n第二行");
    
    // 逐字字符串:\n 原样打印
    Console.Write(@"路径C:\Users\Admin");
    // 实际输出:路径C:\Users\Admin

2.保留字作为标识符:如果需要使用 C# 的关键字(如 class, namespace, for)作为变量名或类名,可以通过在名前加 @ 来绕过限制,例如:@namespace。

数据类型之内存原理:值类型 vs 引用类型

C# 的数据类型主要分为两大类,它们在内存中的管理方式截然不同。

值类型 (Value Types)

典型成员:int, double, bool, struct, enum。

  • 内存位置:主要分配在栈 (Stack) 中。
  • 存储内容:直接存放数据本身的值。
  • 复制行为:将一个值类型的变量赋值给另一个变量时,系统会在栈上复制一份完全独立的数据。两者互不影响。

引用类型 (Reference Types)

典型成员:class (类), interface (接口), array (数组), string。

  • 内存位置:数据实体存储在堆 (Heap) 中,而变量本身在栈中仅保存指向堆中数据的“地址引用”。
  • 复制行为:将一个引用类型变量赋值给另一个变量时,拷贝的是“地址”。两个变量指向堆上的同一块内存区域,修改其中任何一个引用的属性都会影响另一方。

控制台交互:读取输入与格式化输出

通过 System.Console 类,开发者可以实现程序与用户的简单文本交互。

接收用户输入:Console.ReadLine()

该方法阻塞程序直到用户按下回车键。它的返回值始终是一个字符串 (string)。如果需要数值类型,必须进行类型转换。

格式化输出:Console.WriteLine()

利用复合格式化字符串功能,可以使用索引占位符 {0}, {1} 替代冗长的拼接语法,提升代码可读性。

实战演练:获取用户信息

结合上述知识,我们可以编写一个简单的交互式程序:

using System;
namespace InteractiveDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入您的姓名:");
            string name = Console.ReadLine();

            Console.Write("请输入您的年龄:");
            // ReadLine 得到的是字符串,如需参与计算需转为 int
            string ageStr = Console.ReadLine(); 

            Console.Write("请输入性别:");
            string sex = Console.ReadLine();

            // 方法一:简单的字符串拼接
            Console.WriteLine("您好:" + name + ", 年龄是:" + ageStr + ",性别:" + sex);

            // 方法二:索引占位符格式化输出
            Console.WriteLine("您好:{0}, 年龄是{1},性别:{2}", name, ageStr, sex);
        }
    }
}

变量命名规范建议

  • 必须以字母、下划线 (_) 或 @ 开头,严禁以数字开头。
  • C# 区分大小写,因此 count 和 Count 是两个不同的变量。
  • 命名应具备含义(PascalCase 或 camelCase),避免使用单字符(除循环计数器外)或无意义缩写。
  • 绝对不要使用 C# 的关键字作为变量名(除非加了 @)。
以上就是C# 变量与常量及数据类型的详细内容,更多关于C#基础编程的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。