C# 语言入门(一)基础介绍与程序规范
本篇核心知识点:C# 语言定位、.NET 框架、VS2022 项目创建、程序基础结构、命名空间 using、类与 Main 入口、控制台输入输出、代码注释规范、标识符命名规则、关键字、#region 代码折叠、C# 与 C++/Java/TS 横向对比
一、C# 语言整体介绍
1. 概念
C#(C Sharp)是微软推出面向对象、强类型编程语言,依托.NET 框架运行;主要两大使用场景:Windows 桌面程序、Unity 游戏脚本开发。
特性
强类型:定义变量必须明确数据类型,类型不能随意自动转换,区别于 TypeScript 弱类型;
纯面向对象:一切逻辑依托类实现,无全局游离函数;
兼容指针:支持不安全代码块操作指针,语法与 C++ 高度一致;
跨语言互通:可编写 dll 动态库,Unity、桌面项目均可复用;
语法融合 C++、Java 优势,相似度高,有 C++ 基础上手极快。
拓展:各语言横向对比
C# VS Java:相似度 80%+,均面向对象、垃圾回收;Java 用
super代表父类,C# 用base;Java 无原生指针;C# VS C++:语法、VS 操作、调试逻辑一致;C# 自动垃圾回收无需手动 delete;支持 unsafe 指针;
C# VS TypeScript:TS 弱类型,C# 强类型;TS 多用于网页,C# 用于游戏 / 桌面。
.NET 框架说明
.NET 是 C# 运行底层类库,内置大量系统工具类(控制台、网络、集合等);安装 VS 时需勾选.NET 桌面开发、Unity 相关组件。
二、VS2022 创建 C# 控制台项目
1. 操作步骤
新建文件夹单独存放 C# 学习工程,与 Unity 工程分开;
打开 VS2022 → 创建新项目 → 选择「控制台应用 (.NET Framework)」;
自定义项目名称、选择 F 盘存放路径,点击创建;
解决方案内可新建多个 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、Javaimport,用于导入其他命名空间下的类,避免完整长路径书写。
特性
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 输入
1Console.ReadKey():读取单个按键,阻塞窗口,用于防止运行完毕闪退;
2Console.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 区分大小写:Hp和hp是两个完全不同标识符。
2 工程编码规范(强制推荐)
1类、方法名:大驼峰(每个单词首字母大写)PlayerInfo、GetHp();
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 运行、断点调试排查逻辑错误。
