C# 快速入门指南.md
$ cat c# 快速入门指南.md

C# 快速入门指南

先了解 C# 语言

C#(读作 “C Sharp”)是由微软开发的一种现代、类型安全、面向对象的编程语言,最初发布于 2000 年,运行在 .NET 平台上。

它融合了 C++ 的强大性能与 Java 的简洁语法,并不断进化,支持:

  • 面向对象编程(OOP)
  • 异步编程(async/await)
  • 函数式特性(LINQ、Lambda)
  • 跨平台开发(.NET 5+ 支持 Windows、Linux、macOS)
  • Web(ASP.NET Core)、桌面(WPF、WinForms)、移动(MAUI)、游戏(Unity)等多领域开发

C# 语法清晰、工具强大(Visual Studio / VS Code)、生态丰富,是企业级开发和现代应用的首选语言之一。

无论你是想开发 Web API、后台服务,还是桌面程序,C# 都是一个高效且可靠的 choice。

一个完整的 C# 控制台应用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;

// 主程序入口(.NET 6+ 单文件模式)
await Main();

async Task Main()
{
    Console.WriteLine("=== 欢迎使用 C# 快速入门示例 ===\n");

    // 1. 基础变量与字符串插值
    string name = "Alice";
    int age = 25;
    bool isDeveloper = true;

    Console.WriteLine($"姓名: {name}, 年龄: {age}, 开发者: {isDeveloper}");

    // 2. 条件判断
    if (age >= 18)
        Console.WriteLine("✅ 成年人");
    else
        Console.WriteLine("⚠️ 未成年人");

    // 3. 循环遍历
    List<string> hobbies = new() { "编程", "阅读", "跑步" };
    Console.WriteLine("\n兴趣爱好:");
    for (int i = 0; i < hobbies.Count; i++)
    {
        Console.WriteLine($"  {i + 1}. {hobbies[i]}");
    }

    // 4. 使用 LINQ 查询(函数式风格)
    var longHobbies = hobbies.Where(h => h.Length > 2).ToList();
    Console.WriteLine("\n长度大于2的兴趣:");
    longHobbies.ForEach(h => Console.WriteLine($"  • {h}"));

    // 5. 定义并使用类(面向对象)
    var person = new Person("Bob", 30);
    person.Greet();

    // 6. 异步获取网络数据(模拟 API 调用)
    Console.WriteLine("\n正在获取数据...");
    string data = await FetchDataAsync();
    Console.WriteLine($"✅ 数据长度: {data.Length} 字符");

    // 7. 自定义工具类:简易配置管理
    var config = new ConfigHelper();
    config.Set("AppVersion", "1.0.0");
    config.Set("MaxRetries", "3");

    string version = config.Get("AppVersion", "unknown");
    int retries = config.Get("MaxRetries", 1);

    Console.WriteLine($"\n配置信息:");
    Console.WriteLine($"  版本: {version}");
    Console.WriteLine($"  最大重试次数: {retries}");

    Console.WriteLine("\n=== 程序执行完成 ===");
}

// 自定义类:表示一个人
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public void Greet() => Console.WriteLine($"👋 大家好,我是 {Name},今年 {Age} 岁。");
}

// 自定义工具类:简易配置管理器
public class ConfigHelper
{
    private readonly Dictionary<string, string> _values = new();

    public void Set(string key, string value) => _values[key] = value;

    public string Get(string key, string defaultValue = "")
        => _values.GetValueOrDefault(key, defaultValue);

    public T Get<T>(string key, T defaultValue)
    {
        var value = _values.GetValueOrDefault(key, null);
        return value == null ? defaultValue : (T)Convert.ChangeType(value, typeof(T));
    }
}

// 异步方法:从 HTTP 接口获取数据
public static async Task<string> FetchDataAsync()
{
    using var client = new HttpClient();
    client.Timeout = TimeSpan.FromSeconds(10);
    return await client.GetStringAsync("https://httpbin.org/json");
}