C# 语言入门(一)基础介绍与程序规范

本篇 核心知识点 :C# 语言定位、.NET 框架、VS2022 项目创建、程序基础结构、命名空间 using、类与 Main 入口、控制台输入输出、代码注释规范、标识符命名规则、关键字、#region 代码折叠、C# 与 C++/Java/TS 横向对比

一、C# 语言整体介绍

1. 概念

C#(C Sharp)是微软推出面向对象、强类型编程语言,依托.NET 框架运行;主要两大使用场景:Windows 桌面程序、Unity 游戏脚本开发。

特性
  1. 强类型:定义变量必须明确数据类型,类型不能随意自动转换,区别于 TypeScript 弱类型;

  2. 纯面向对象:一切逻辑依托类实现,无全局游离函数;

  3. 兼容指针:支持不安全代码块操作指针,语法与 C++ 高度一致;

  4. 跨语言互通:可编写 dll 动态库,Unity、桌面项目均可复用;

  5. 语法融合 C++、Java 优势,相似度高,有 C++ 基础上手极快。

拓展:各语言横向对比

  1. C# VS Java:相似度 80%+,均面向对象、垃圾回收;Java 用super代表父类,C# 用base;Java 无原生指针;

  2. C# VS C++:语法、VS 操作、调试逻辑一致;C# 自动垃圾回收无需手动 delete;支持 unsafe 指针;

  3. C# VS TypeScript:TS 弱类型,C# 强类型;TS 多用于网页,C# 用于游戏 / 桌面。

.NET 框架说明

.NET 是 C# 运行底层类库,内置大量系统工具类(控制台、网络、集合等);安装 VS 时需勾选 .NET 桌面开发、Unity 相关组件

二、VS2022 创建 C# 控制台项目

1. 操作步骤

  1. 新建文件夹单独存放 C# 学习工程,与 Unity 工程分开;

  2. 打开 VS2022 → 创建新项目 → 选择「控制台应用 (.NET Framework)」;

  3. 自定义项目名称、选择 F 盘存放路径,点击创建;

  4. 解决方案内可新建多个 Lesson 项目,右键设为启动项切换运行。

特性

1 VS 操作逻辑、编译 / 调试快捷键(F5 运行)和 C++ 完全统一;

2 源文件后缀 .cs,编译后输出.exe可执行程序,存放在项目 Debug 文件夹;

3 双击 exe 可独立运行,调试模式会阻塞控制台窗口。

基础 HelloWorld 完整代码示例

复制代码
using System; // 引入系统命名空间
// 当前程序命名空间
namespace HelloWorldProject{
    // 程序主类
    class Program{
        // 程序入口静态Main方法(主线程起点)
        static void Main(string[] args){
            // 控制台输出一行文字
            Console.WriteLine("Hello World");
            // 阻塞控制台,防止窗口一闪而过
            Console.ReadKey();
        }
    }
}

三、C# 程序核心结构拆解

3.1 using 引入命名空间

概念

等价于 C++ #include、Java import,用于导入其他命名空间下的类,避免完整长路径书写。

特性

1 语法:using 命名空间名;,写在文件最顶部;

2 仅导入当前文件生效,可同时多条 using 引入多个库;

3 核心基础库:using System; 提供控制台、基础类型。

拓展区别

C++ #include 导入文件源码,C# using 仅引用已编译类库,不复制代码。

3.2 namespace 命名空间

概念

相当于代码 "文件夹",隔离重名类,防止类名冲突。

特性

1 所有类必须包裹在命名空间内部;

2 不同 namespace 下同名类属于完全不同类型;

3 项目名默认作为根命名空间。

3.3 class 类 & Main 入口函数

概念

C# 所有函数、变量必须封装在类内部,无全局函数;Program是默认主类。

Main 方法核心规则

1 固定写法 static void Main(string[] args),程序执行唯一起点;

2 static 静态方法,属于类本身,无需实例对象调用;

3 程序生命周期:从 Main 第一行执行,Main 执行完毕程序直接退出;

4 编码规范:所有类、方法名首字母大写(大驼峰)

四、控制台输入输出

1 输出

Console.WriteLine("内容"):输出后自动换行;

Console.Write("内容"):输出不换行。

2 输入

1 Console.ReadKey():读取单个按键,阻塞窗口,用于防止运行完毕闪退;

2 Console.ReadLine():读取一整行字符串,返回 string 类型,可接收用户输入文字。

代码示例
复制代码
static void Main(string[] args)
{
    Console.Write("请输入你的名字:");
    string name = Console.ReadLine(); // 读取一行输入
    Console.WriteLine("你输入的名字:" + name);
    Console.ReadKey();
}

五、代码注释全类型

1 单行注释 //

作用:单行代码说明,和 C++ 完全一致。

复制代码
// 控制台输出文字
Console.WriteLine("测试");

2 块注释 /* 内容 */

作用:一次性注释多行代码,批量屏蔽代码。

复制代码
/*
这里多行内容全部注释
Console.WriteLine(123);
*/

3 文档注释 ///(工程必备)

概念

连续三个斜杠,用于给类、方法、变量生成提示文档,鼠标悬浮自动展示说明。

特性

1 支持描述功能、参数、返回值;

2 团队协作核心规范,其他同事无需阅读内部代码即可知道用法。

代码示例
复制代码
/// <summary>玩家生命值变量</summary>
int hp;
/// <summary>两数相加工具方法</summary>
/// <param name="a">第一个数字</param>
/// <param name="b">第二个数字</param>
/// <returns>两数之和</returns>
static int Add(int a, int b){
    return a + b;
}

六、标识符(变量 / 类 / 方法命名规则)

1 硬性语法规则(违反编译报错)

1 只能由 字母、数字、下划线_、@ 组成,其余符号禁止;

2 不能以数字开头

3 不能与 C# 内置关键字重名;

4 区分大小写:Hphp 是两个完全不同标识符。

2 工程编码规范(强制推荐)

1 类、方法名 :大驼峰(每个单词首字母大写)PlayerInfoGetHp()

2 普通变量 :小驼峰 / 全小写 playerHp、count;

3 枚举常量:全大写 MAX_LEVEL

4 禁止无意义单字母命名,语义清晰;

拓展

驼峰命名法目的:提升代码可读性,企业面试、项目开发严格检查。

七、C# 关键字

概念

语言预留特殊单词,拥有固定语法含义,禁止直接用作标识符

特性

1 若必须使用关键字做名称,可前缀 @规避,例 @int

2 高频基础关键字:static、void、class、namespace、using、base、this

3 进阶特殊关键字:delegate、event、unsafe(C# 独有,C++ 无)。

对比拓展

Java 父类关键字super,C# 统一使用base;C++ 无 this 关键字,C# this代表当前实例对象。

八、#region 代码折叠块

概念

VS 专用预处理标记,手动划分代码区域,支持一键折叠 / 展开长代码,优化阅读。

语法格式

复制代码
#region 【区域描述文字】
// 同一功能代码写在此处
Console.WriteLine("功能A逻辑");
#endregion
特性

1 可嵌套、可放在函数内外;

2 团队统一规范使用,区分网络、角色、道具等功能模块;

3 不建议过度滥用,过多折叠反而增加阅读成本。

九、面向对象基础三句核心定义(重点)

1 通过class封装数据属性与功能方法;

2 使用类实例化内存中的独立对象;

3 对象之间互相调用方法、传递数据,完成整套程序逻辑。

示例:矩形封装

复制代码
/// <summary>矩形类(游戏碰撞常用)</summary>
class Rect{
    // 属性:坐标、宽高
    public int x;
    public int y;
    public int width;
    public int height;
    /// <summary>计算矩形面积</summary>
    public int GetArea(){
        return width * height;
    }
}

游戏拓展:游戏矩形额外存储左下角坐标,提供矩形碰撞检测方法。

十、C# 进阶知识点预告

1 基础:数据类型、变量、常量、运算符、分支循环;

2 面向对象:继承、多态、重载、索引器、属性;

3 C# 独有特性:反射、委托、事件、unsafe 指针、多线程;

4 网络编程:TCP/UDP Socket,游戏登录、服务端通信;

5 数据库:数据持久化存储、账号校验;

项目选型拓展

回合 / 卡牌游戏:TCP 稳定传输,无需 UDP;

FPS 实时对战:需要 UDP 低延迟通信。

十一、学习拓展建议

1 横向对比 C++/Java/TS,相同知识点快速吸收差异点;

2 规范文档注释、驼峰命名,贴合企业开发标准;

3 独立创建小型 Demo 项目,练习类封装;

4 熟练 VS 调试快捷键,F5 运行、断点调试排查逻辑错误。