C#基本背景数据类型扫盲
给自己整理的C#扫盲笔记
学前须知
c#:一种面向对象的语言,封装、继承和多态。所有的变量和方法,包括应用程序的入口点Main方法,都封装在类定义中。
.NET是一个免费,跨平台,开源的开发平台,可以利用它构建多种不同类型的应用程序。
.NET Framework是一个可以运行.NET程序的软件框架。
.NET Core是.NET Framework的一个新版本,是一个跨平台框架,可以运行在Windows、macOS和Linux操作系统上。
.NET Core并不是.NET Framework框架的简单升级,而是从头开始编写的,具有模块化、轻量级、快速和跨平台框架的特点。它包括运行基本的.NET Core应用程序所需的核心特性。此外的其他特性以NuGet包的形式提供,可以根据需要将其添加到应用程序中。
随着.NET Core跨平台的出现,原来基于.NET Framework开发的类库不支持跨平台。.NET Standard可以让一个类库既支持.NET Framework又支持.NET Core。
即.NET Standard是一项API规范,每一个特定的版本都定义了必须实现的基类库。
微软为了统一.NET平台,计划将所有的.NET运行时统一为一个.NET平台,并为所有应用程序模型(如:.NET Core, Windows Forms, WPF, UWP, Xamarin, Blazor)提供统一的基类库(BCL)。在2019年5月6日宣布了.NET 5将是.NET Core 3.0的下一个主要版本。
使用Visual Studio 打开WPF项目
选择的是.sln文件
注:所有C#文件均以.cs为扩展名,文件名称可以任意指定,但建议最好文件名和其中的类名保持一致。
.csproj是一个项目的配置文件,也是由Visual Studio创建项目时根据用户配置自动生成的。使用记事本打开是一个XML文件,记录了与这个项目有关的相关数据和信息,如程序的版本信息,包含的文件,引用的命名空间,生成文件的类型和位置等。
bin文件夹是用来保存项目生成后程序集,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径
obj目录是用来保存每个模块的编译结果,
C#基本规则
- 语句以英文分号结束。
- 字母区分大小写。
- 一个可执行程序只能指定一个程序入口。C#应用程序的入口方法为静态(static)的Main()方法
- 默认的C#代码格式化工具、命令,Ctrl+K,Ctrl+D和Ctrl+K,Ctrl+F。前者是格式化当前打开的整个文档,而后者是格式化当前选中的文档内容。
- 代码块:被一对大括号({})包裹的代码。代码块的目的是为了让代码层次清晰,结构分明。定义或者声明如:命名空间,类,接口,方法,结构时必须有代码块包裹。
- 注释种类:双斜杠:注释单行 /**/ :注释单行或者多行 ///summary 文档摘要 //:TODO
如果需要给C#的类或者其成员添加文档摘要,可以使用如下标识块(将鼠标放在对应的类或成员上时,标识内容会同步出现):
/// <summary>
/// 摘要内容
/// </summary>
将这个标识块(summary)放在类或者成员的紧挨着的上一行即可(中间不能隔行)
变量声明(还包含了隐式变量和常量)
C#是强类型语言,所有的变量声明都必须显式或者隐式地指定数据类型,在为变量赋值时需要将正确的数据类型的值赋给有相应数据类型的变量。
int a = 10,
b = 20,
c;
在一行语句声明多个以逗号隔开的变量的语法中,对应声明的所有变量的数据类型相同。
注:在同一个作用域下,变量名必须唯一;以字母下划线或者@开头,不能以数字开头,后边可以跟任意字母、数字、下划线。注意区分大小写。
变量声明一般在类或者方法中,作用域不相同。类型一旦确定不可更改。一般使用驼峰命名法(首个单词的首字母小写,之后的单词的首字母大写)。
变量在使用前必须赋值。
隐式变量
还可以使用var进行隐式变量声明,编译器自己推断对应的变量类型是什么。【既然要推断,必须在定义时就进行初始化。要不然就没法推断】
要明白推断的局限性,不要一次给多个变量赋值。
var还可以在for以及foreach循环中使用,但不能作为方法参数的类型。
常量
使用const关键字来声明,声明后该变量的值在整个程序中都不能被更改。
const double e = 2.731;
常量不允许先声明后赋值,可以在一条语句中对多个常量进行赋值。
C#关键字
关键字不可作为变量名出现,在Visual Studio中,如果代码出现语法错误,编译器会将有语法错误的语句以红色波浪线的样式标注,根据提示修改即可。
非要使用的话,可以在前边加@。
数据类型
包括值类型(简单类型、枚举类型、结构类型和可空类型)和引用类型(类、接口、数组和委托?)
值类型 | byte, sbyte, int, uint, short, ushort, long, ulong, float, double, decimal, char, bool, DateTime 等 |
---|---|
引用类型 | string, class, object, interface, delegate 等。 |
常见的数字类型包括整型和浮点型,不同类型可达到的数字范围不同,占用内存位数也不同。在具体使用时要看清楚范围是否符合自己的需要。 | |
【精确十进制数(decimal),char 单引号 字符,string 双引号 字符串】 |
在C#中,声明字符串变量课使用关键字string或System.String类,两种方法并无区别。
string a = "heaven";
System.String b = "ghost";
特殊字符
转义字符\对特殊符号进行转义,在字符串中必须使用反斜杠()来转义双引号。
@符号对部分特殊符号进行转义,一般放在字符串变量的左边双引号前面,只用于C#中的特殊字符。
字符操作
使用(+)来连接两个或者多个字符串,连成一个新的字符串。C#中字符串不可变,一旦在内存中创建就不能更改。每次对字符串进行拼接后,.NET CLR将为拼接的字符串创建一个新的内存位置。如果拼接的字符串超过5个,可使用StringBuilder【一种数据类型】而不是string。
拼接还可以使用字符串格式化方法string.Format()。
string name = "A";
string a = string.Format("这是{0}写的代码", name);
字符串插值,在原有的字符串中间插入别的东西。需要注意的是此时要输出{ 必须有两个哦。
string name = "A"
string a = $"这是{name}写的代码";
一些知识点
使用using 导入命名空间
定义类以关键字 class 开头,后接类的名称。还可以给类指定访问修饰符。和命名空间类似,在类名后使用一对花括号来包含此类的源代码。
参考链接
- 有什么推荐的C#的学习资源嘛? - 码老头的回答 - 知乎 https://www.zhihu.com/question/520996786/answer/2382904462
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)