C# - 概述
C# - 现代概述
Section titled “C# - 现代概述”C# 是什么?
Section titled “C# 是什么?”C#(发音为“C sharp”)是一门现代的、面向对象的、类型安全的编程语言。它最初由微软在其 .NET 计划中开发,现已发展成为一门多功能、开源的语言,并拥有一个繁荣的生态系统。C# 已经过 ECMA 和 ISO 的标准化,这确保了其稳定性和长期可用性。
C# 最初由 Anders Hejlsberg 的团队为 .NET Framework 设计,现在是现代 .NET 平台(包括 .NET 6、7、8 及更高版本)的主要语言。这个平台是跨平台的,允许开发者使用单一代码库构建可在 Windows、macOS 和 Linux 上原生运行的应用程序。
C# 被设计为与公共语言基础结构(Common Language Infrastructure, CLI)协同工作,CLI 提供了一个运行时环境(公共语言运行时 Common Language Runtime, CLR),能够跨不同平台和架构执行来自各种高级语言的代码。
现代 C# 的主要特性
Section titled “现代 C# 的主要特性”C# 拥有诸多特性,使其成为一门功能强大且对开发者友好的语言,用于构建健壮、可伸缩的应用程序:
- 面向对象与组件导向:C# 完全支持封装、继承和多态。它还擅长构建自包含、可重用的软件组件。
- 类型安全与内存安全:C# 在编译时强制执行严格的类型检查,防止常见的编程错误。它通过垃圾回收器进行自动内存管理,消除了手动内存释放的需要,并防止内存泄漏。
- 真正的跨平台:借助 .NET,C# 不再仅仅适用于 Windows。你可以使用一流的支持在 Linux、macOS 以及 Docker 等容器中构建和部署应用程序。
- 高性能:现代 .NET 运行时具有先进的即时 (Just-In-Time, JIT) 编译器、提前 (Ahead-Of-Time, AOT) 编译选项以及持续的性能优化,使 C# 适用于对性能要求严苛的应用程序。
- 异步编程:内置的
async和await关键字使得编写响应式、非阻塞的代码变得异常简单,这对于 I/O 密集型应用程序(如 Web 服务和基于 UI 的应用)至关重要。 - 统一而丰富的生态系统:C# 是统一的 .NET 平台的一部分,该平台提供了一套庞大的库(基类库 Base Class Library),涵盖从文件 I/O、网络到数据结构和加密等所有领域。
强大的语言特性
Section titled “强大的语言特性”C# 不断演进,增加了强大的特性,提升了生产力并使代码更简洁。以下是一些亮点:
- LINQ(语言集成查询):直接在 C# 中编写富有表现力的声明式查询,以处理来自集合、数据库或 XML 的数据。
- 模式匹配:一种复杂而精巧的方式,用于检查值的“形状”并从中提取信息,从而使条件逻辑更加简洁和可读。
- 可为空引用类型:一项编译时特性,可帮助你防止
NullReferenceException(空引用异常),这是编程中最常见的 bug 之一。 - 泛型:创建可与任何数据类型配合使用的灵活、可重用且类型安全的类和方法。
- 记录类型和不可变性:轻松定义不可变的数据传输对象,这有助于编写更安全、更可预测的代码,尤其是在并发系统中。
- 顶级语句:C# 9 中新增的特性,它允许你编写简单的程序而无需
Main方法和Program类的样板代码,使初学者更容易上手。
第一个 C# 程序:现代方式
Section titled “第一个 C# 程序:现代方式”得益于顶级语句,现代 C# 中的“Hello, World!”程序变得异常简单。这单行代码就是一个完整、可运行的程序。
// 这是一个完整的 C# 程序!System.Console.WriteLine("Hello, Modern C# World!");要运行此代码,你需要安装 .NET SDK。将代码保存为 Program.cs,在该文件夹中打开终端,然后运行 dotnet run。
作为对比,以下是使用 Main 方法的传统结构,它仍然用于更复杂的应用程序中,并且理解它也很重要:
using System;
nnamespace HelloWorldApp{ class Program { static void Main(string[] args) { Console.WriteLine("Hello, Traditional C# World!"); } }}C# 的应用场景
Section titled “C# 的应用场景”C# 是一门真正的通用语言,用于构建各种各样的应用程序:
1. Web 应用程序与服务
Section titled “1. Web 应用程序与服务”结合 ASP.NET Core,C# 是构建高性能、可伸缩 Web API 和 Web 应用程序的领先选择。借助 Blazor,你甚至可以使用 C# 而不是 JavaScript 来编写交互式 Web UI。
// ASP.NET Core 中的一个最小化 API 端点var builder = WebApplication.CreateBuilder(args);var app = builder.Build();
app.MapGet("/", () => "Hello from a Web API!");
app.Run();2. 游戏开发
Section titled “2. 游戏开发”得益于 Unity 引擎(为数百万款从独立游戏到 AAA 级大作提供动力),C# 是游戏开发领域的主导语言。
// 一个用于移动对象的基本 Unity 脚本using UnityEngine;
public class PlayerController : MonoBehaviour{ public float speed = 5.0f;
void Update() { float horizontal = Input.GetAxis("Horizontal"); transform.Translate(new Vector3(horizontal, 0, 0) * speed * Time.deltaTime); }}3. 桌面与移动应用
Section titled “3. 桌面与移动应用”借助 .NET MAUI(Multi-platform App UI,多平台应用 UI),你可以使用 C# 和单一代码库为 Windows、macOS、Android 和 iOS 构建原生应用。对于特定于 Windows 的应用,WPF 和 WinForms 仍然是流行的选择。
<!-- .NET MAUI XAML 文件中的一个简单按钮 --><VerticalStackLayout> <Label Text="Welcome to .NET MAUI!" FontSize="Large" HorizontalOptions="Center" /> <Button Text="Click Me" Clicked="OnCounterClicked" HorizontalOptions="Center" /></VerticalStackLayout>4. 云原生与无服务器应用
Section titled “4. 云原生与无服务器应用”C# 是 Microsoft Azure 等云平台上的“一等公民”。它非常适合构建微服务、无服务器函数(Azure Functions)以及在云中运行的可伸缩应用程序。
// 一个响应 HTTP 请求的简单 Azure Functionusing Microsoft.AspNetCore.Mvc;using Microsoft.Azure.Functions.Worker;using Microsoft.Azure.Functions.Worker.Http;
public static class HttpExample{ [Function("HelloFunction")] public static IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestData req) { return new OkObjectResult("Hello from an Azure Function!"); }}5. AI 与机器学习
Section titled “5. AI 与机器学习”借助 ML.NET 等库,你可以将自定义机器学习模型集成到 .NET 应用程序中,用于情感分析、价格预测和图像识别等任务,所有这些都可在 C# 生态系统内完成。
Q1:.NET Framework、.NET Core 和 .NET 之间有什么区别?
Section titled “Q1:.NET Framework、.NET Core 和 .NET 之间有什么区别?”.NET Framework 是最初的、仅限 Windows 的版本。.NET Core 是开源的、跨平台的重写版本。从 .NET 5 开始,两者被统一为一个平台,简称为 .NET。对于所有新的开发,你都应该使用最新版本的 .NET(例如 .NET 8)。
Q2:C# 适合初学者吗?
Section titled “Q2:C# 适合初学者吗?”是的。尽管它是一门功能强大的语言,但其语法清晰且一致。顶级语句的引入使其学习入门变得更加容易。它的强类型特性也有助于初学者及早发现错误。
Q3:C# 的性能与 C++ 或 Python 相比如何?
Section titled “Q3:C# 的性能与 C++ 或 Python 相比如何?”对于 CPU 密集型任务,C# 比 Python 快得多,因为它是一门编译型语言。在许多场景下,尤其是在 .NET 近期优化之后,它的性能接近 C++,同时还提供了自动内存管理的安全性。