Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 2.1 变量与数据类型

2.1 变量与数据类型

变量基础

变量是程序中最基本的存储单元,用于保存程序运行期间可能变化的数据。在C#中,变量需要先声明后使用,声明语法为:

数据类型 变量名 [= 初始值];

示例:

int age = 25;
string name = "张三";
bool isActive = true;

C#数据类型

C#数据类型分为值类型和引用类型两大类:

值类型(Value Types)

  1. 整数类型:

    • byte (0-255)
    • short (-32,768 to 32,767)
    • int (-2.1B to 2.1B)
    • long (极大整数)
  2. 浮点类型:

    • float (7位精度)
    • double (15-16位精度)
    • decimal (28-29位精度,适合财务计算)
  3. 其他值类型:

    • bool (true/false)
    • char (单个Unicode字符)
    • struct (自定义值类型)

引用类型(Reference Types)

  1. string:不可变的字符序列
  2. object:所有类型的基类
  3. class:自定义引用类型
  4. interface:接口类型
  5. array:数组类型

类型转换

C#支持两种类型转换方式:

隐式转换(自动)

int num = 10;
long bigNum = num;  // 自动转换

显式转换(强制)

double pi = 3.14;
int intPi = (int)pi;  // 结果为3

方法转换

string numberStr = "123";
int number = int.Parse(numberStr);
// 或使用TryParse避免异常
int.TryParse(numberStr, out number);

特殊数据类型

var关键字(类型推断)

var message = "Hello World";  // 编译器推断为string
var count = 10;              // 推断为int

dynamic类型

dynamic dynamicVar = 10;
dynamicVar = "Now I'm a string";  // 运行时确定类型

可空类型(Nullable)

int? nullableInt = null;  // 值类型可赋值为null
if(nullableInt.HasValue) 
{
    Console.WriteLine(nullableInt.Value);
}

最佳实践

  1. 优先使用int而非short/long,除非有明确需求
  2. 财务计算必须使用decimal
  3. 字符串操作使用StringBuilder提高性能
  4. 使用var简化代码,但不要滥用(应保持代码可读性)
  5. 避免不必要的类型转换,特别是装箱/拆箱操作

示例代码

using System;

class DataTypesDemo
{
    static void Main()
    {
        // 基本类型示例
        int studentCount = 30;
        double averageScore = 85.5;
        char grade = 'A';
        bool isPassed = true;
        
        // 类型转换
        string input = "1234";
        int converted = int.Parse(input);
        
        // 可空类型
        int? nullableValue = null;
        nullableValue = converted;
        
        // 输出
        Console.WriteLine($"平均分:{averageScore:F1}");
        Console.WriteLine($"转换值:{converted}");
        Console.WriteLine($"可空类型:{nullableValue ?? 0}");
    }
}

常见问题

  1. Q:什么时候用float/double/decimal?

    • 科学计算:double
    • 金融计算:decimal
    • 图形处理:float
  2. Q:string是值类型还是引用类型?

    • string是特殊的引用类型,具有值类型的语义(不可变性)
  3. Q:var会影响性能吗?

    • 不会,var只是编译时类型推断,生成的IL代码与显式声明相同
Last Updated:: 5/3/25, 11:01 PM