位置: 文档库 > C#(.NET) > C语言快速学习与入门指南

C语言快速学习与入门指南

FutureDragon 上传于 2020-03-23 18:46

《C语言快速学习与入门指南》标题中的"C语言"常被误认为C#的前身,但二者在语法、设计目标和生态上存在显著差异。本文将以C#(.NET平台)为核心,系统梳理其快速学习路径,涵盖基础语法、面向对象特性、核心库使用及实际项目开发技巧,帮助零基础读者在两周内掌握C#开发能力。

一、C#语言基础:从Hello World到变量操作

C#作为.NET平台的首选语言,其开发环境配置是首要步骤。推荐使用Visual Studio 2022社区版(免费),安装时勾选".NET桌面开发"和"ASP.NET开发"工作负载。创建控制台项目时,选择"Console App (.NET Core)"模板,项目结构中重点关注Program.cs文件。

// 第一个C#程序
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello, C# World!");
        int age = 25;
        Console.WriteLine($"年龄: {age}");
    }
}

变量声明需指定类型(如int、string、double),C# 10引入的全局using指令可简化命名空间引用。数值类型包含byte(0-255)、int(-2^31~2^31-1)、long等,浮点型有float(7位精度)、double(15-16位)。字符串处理推荐使用StringBuilder类进行高频修改:

using System.Text;

StringBuilder sb = new StringBuilder();
sb.Append("C#");
sb.Append(" 编程");
Console.WriteLine(sb.ToString()); // 输出: C# 编程

二、流程控制与异常处理

条件语句中,if-else结构与Java类似,但switch表达式(C# 7.0+)支持模式匹配:

object obj = "text";
string result = obj switch
{
    int i when i > 0 => "正数",
    string s => $"字符串: {s}",
    _ => "未知类型"
};

循环结构包含for、foreach、while,其中foreach对集合遍历更安全。异常处理采用try-catch-finally模式,推荐捕获特定异常而非Exception基类:

try
{
    int div = 10 / 0;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine($"除零错误: {ex.Message}");
}
finally
{
    Console.WriteLine("执行清理操作");
}

三、面向对象编程核心

类定义需包含访问修饰符(public/private/protected),构造函数支持重载和链式调用:

public class Person
{
    public string Name { get; set; }
    private int _age;

    public Person(string name) : this(name, 18) { }
    public Person(string name, int age)
    {
        Name = name;
        _age = age;
    }

    public void Introduce()
    {
        Console.WriteLine($"{Name}, {_age}岁");
    }
}

继承使用冒号语法,sealed关键字可防止类被继承。接口实现支持显式接口实现:

interface ILogger
{
    void Log(string message);
}

class FileLogger : ILogger
{
    void ILogger.Log(string message) // 显式实现
    {
        File.AppendAllText("log.txt", message);
    }
}

多态通过虚方法(virtual)和重写(override)实现,抽象类使用abstract关键字定义:

public abstract class Shape
{
    public abstract double CalculateArea();
}

public class Circle : Shape
{
    public double Radius { get; set; }
    public override double CalculateArea() => Math.PI * Radius * Radius;
}

四、集合与LINQ操作

.NET提供丰富的集合类型:ArrayList(非泛型)、List(动态数组)、Dictionary(哈希表)。推荐优先使用泛型集合以获得类型安全:

List numbers = new List { 1, 2, 3 };
numbers.Add(4);
numbers.RemoveAt(0); // 移除第一个元素

LINQ(语言集成查询)提供声明式数据操作,查询语法与SQL类似:

int[] scores = { 90, 85, 77, 92 };
var highScores = from score in scores
                 where score > 80
                 orderby score descending
                 select score;

// 方法语法等价形式
var highScores2 = scores.Where(s => s > 80)
                       .OrderByDescending(s => s);

LINQ to Objects支持延迟执行,实际查询在枚举时触发。对于大数据集,AsParallel()可启用并行处理

var parallelResult = scores.AsParallel()
                          .Where(s => s % 2 == 0)
                          .ToList();

五、文件与流操作

System.IO命名空间提供文件操作类,File类用于静态方法调用:

// 写入文件
File.WriteAllText("test.txt", "C#文件操作示例");

// 读取文件
string content = File.ReadAllText("test.txt");

// 逐行读取
foreach (string line in File.ReadLines("log.txt"))
{
    Console.WriteLine(line);
}

流操作(Stream)提供更底层的控制,FileStream配合BinaryReader/Writer可处理二进制数据:

using (FileStream fs = new FileStream("data.bin", FileMode.Create))
using (BinaryWriter writer = new BinaryWriter(fs))
{
    writer.Write(123); // 写入整数
    writer.Write("文本");
}

六、异步编程模型

async/await模式简化异步操作,Task表示可返回结果的异步操作:

public async Task DownloadContentAsync(string url)
{
    using (HttpClient client = new HttpClient())
    {
        return await client.GetStringAsync(url);
    }
}

异步方法调用时需添加await关键字,主方法需标记为async Task:

static async Task Main(string[] args)
{
    string content = await DownloadContentAsync("https://example.com");
    Console.WriteLine(content.Length);
}

并行处理可使用Parallel类或Task.WhenAll:

Task[] tasks = new Task[3];
for (int i = 0; i  Compute(i));
}
await Task.WhenAll(tasks);
int[] results = tasks.Select(t => t.Result).ToArray();

七、实际项目开发技巧

1. 依赖注入:ASP.NET Core默认支持DI,自定义服务需在Startup.cs中注册:

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient();
}

2. 单元测试:使用xUnit框架创建测试类,Assert类提供多种断言方法:

[Fact]
public void TestAddition()
{
    Calculator calc = new Calculator();
    int result = calc.Add(2, 3);
    Assert.Equal(5, result);
}

3. NuGet包管理:通过Visual Studio的"管理NuGet程序包"界面或dotnet CLI安装第三方库:

dotnet add package Newtonsoft.Json

4. 调试技巧:使用Debug.WriteLine输出调试信息,条件断点可设置触发条件:

[Conditional("DEBUG")]
public static void WriteLine(string message)
{
    Console.WriteLine(message);
}

八、进阶主题推荐

1. 反射与特性:通过Type类获取元数据,自定义特性可添加元信息:

[AttributeUsage(AttributeTargets.Class)]
public class AuthorAttribute : Attribute
{
    public string Name { get; }
    public AuthorAttribute(string name) => Name = name;
}

2. 动态编程:dynamic关键字绕过编译时类型检查,ExpandoObject支持动态属性:

dynamic person = new ExpandoObject();
person.Name = "张三";
person.Age = 30;

3. 并行编程:PLINQ自动并行化查询,Partitioner类优化大数据集处理:

var parallelQuery = numbers.AsParallel()
                          .Select(n => n * n)
                          .Where(n => n > 100);

关键词:C#编程.NET框架、面向对象、LINQ查询、异步编程、依赖注入、单元测试、NuGet包管理反射特性、并行处理

简介:本文系统介绍C#语言在.NET平台下的开发方法,涵盖基础语法、面向对象设计、集合操作、异步编程等核心内容,结合实际代码示例说明文件操作、依赖注入、单元测试等企业级开发技巧,适合零基础学习者快速掌握C#开发能力。