01、C#基础概念
1.1、C#简介
C# (读作C Sharp)是由微软公司开发的一种面向对象、类型安全、高效且简单的编程语言,最初于 2000 年发布,并随后成为 .NET 框架的一部分。所以学习C#语言的同时,也是需要同步学习.NET框架的,不过要要注意C#与.NET的对应版本。
C#语言和Java类似,是一门简单易用、应用广泛的高级编程语言。结合了面向对象编程、事件驱动、泛型编程、异步编程等众多现代化编程概念,属于编译性语言。主要特点:
- 面向对象:封装(类与对象)、继承(类继承、接口继承)、多态等(类继承、多接口继承实现)。
- 类型安全:强类型安全,在编译时检测,提高代码可靠性。
- 交互性,易于各种语言交互,如VB、F#、C++、JavaScript、Python等。
- GC管理:自动内存管理,C# 采用垃圾回收机制,无需申请、释放内存,减少内存泄漏风险。
- 开源跨平台:.NETCore框架是开源跨平台的,支持多种操作系统。
- 强大的标准库,C#拥有丰富的标准类库(.NET Framework或.NET Core),内置各种功能和工具。
- 宇宙第一开发IDE: Visual Studio 提供了强大的开发、调试和设计工具。
.NET Framework最高支持C#语法版本是C#7.3
、.NET Standard 2.1
,可以基于该版本学习,后面的版本可以根据需要学习新增特性即可。
图来源:C#.NET体系图文概述
1.2、开发环境
- 运行环境:安装.NET SDK:下载 .NET, 下载.NET Framework
- 开发环境:开发IDE工具安装 Visual Studio ,内置很多开发套件,及多个版本的SDK。
📢 推荐安装
Enterprise
企业版!功能最全。开发工具了解:《Visual Studio工具使用入门》
1.3、Hello World
using System; //引用using
namespace ConsoleApp_Net48 //申明命名空间
{
internal class Program //定义类
{
static void Main(string[] args) //方法,控制台入口函数
{
Console.WriteLine("Hello World!"); //控制台打印输出
Console.ReadLine();
}
}
}
- using 引用命名空间资源。
- namespace 命名空间 :一组代码资源(类、结构、枚举、委托等)的集合。
- class 类:定义一个类,C#中最常用的代码组织单元。
- 方法:特定功能的代码块,有输入和输出(也可为空)。
02、基础语法
C#代码以行为单位,(半角)分号;
结尾,花括号{ 代码块 }
为一个独立的代码区域。
2.1、变量申明
变量类型 变量名 = 值
,变量就是对象值的名字,就像人的名字一样,通过变量来访问具体的对象值。变量可以是局部变量、参数、字段、数组、对象实例、委托等。
- 申明变量、赋值可以一次性,也可分开,也可以一次性申明多个变量。
- 变量的使用前必须初始化(赋值),使用未赋值的变量会引发异常。
- 同一作用域内,一个变量名只能申明一次,不可重复。
- 字符串用
“双引号”
,单个字符用'单引号'
。
也可以用
var
申明,编译器通过值类型推断其具体变量类型,因此申明时必须赋值,var是一个语法糖。
int age; //先申明,后赋值
age = 12;
float weight = 55.55f;
double height = 188.88d; //末尾可以不用带d,默认就是double
var name = "sam";
var lastName = 'T';
string f1, f2, f3 = "F3"; //申明了3个变量,对f3赋值了
var user = new User(); //创建一个User对象实例
User user2 = new User(); //创建一个User对象实例
2.2、代码风格
C#代码的命名风格大多为驼峰命名为主,相对比较统一,不像前端那么麻烦,HTML、CSS、JS、URL各不相同。
- 区分大小写,字母、数字、下划线组成,不能数字开头,不能是关键字。C#中的关键字还是挺多的,参考 C# 关键字。
- 驼峰命名:
- 文件名、类名、接口、方法等都是大驼峰:
UserName
。 - 局部变量为小驼峰:
userName
。 - 字段:下划线+小驼峰/大驼峰都可以
_userName
、_UserName
,或者"m_
"开头,按照团队规范即可。 - 常量:全大写(下划线分割),或者大驼峰都可以,
USER_NAME
、UserName
。
- 文件名、类名、接口、方法等都是大驼峰:
public string UserName {
get => _UserName; set => UserName = value; }
public string _UserName;
public const int Max=100;
public static