当前位置:网站首页>【全栈计划 —— 编程语言之C#】基础入门知识一文懂
【全栈计划 —— 编程语言之C#】基础入门知识一文懂
2022-07-07 09:51:00 【杨枝】
前言
首次写偏向于项目的文章,无论是Unity的游戏的文章,还在现在用于服务Unity开发的C#文章中,都不会十分耐心的琢磨细节。
不太想去抓细节,写出来的东西能够跑起来就行,深挖容易消耗自己的热情,而且写出来的文章也十分啰嗦和累赘。
跑起来获得正反馈,不一直摸索一些没有成就感的细节,这种很容易打击自信心的,大踏步往前,不求甚解都行,然后再去优化,不断处理曾经没有处理好的细节、bug,迭代前进。
希望都能够享受解决Bug的过程啦
编辑器的认识
紫色的logo的软件叫做Microsoft Visual Studio
。
蓝色的logo的软件叫做Visual Studio Code
。
两款软件都是微软家的东西,都是深受开发者喜爱的软件,只是各自拿手的领域不同。
两者区别大致如下,作为常识随便过一下就可以了。
① 紫色logo的是编译器,蓝色logo的是编辑器
VisualStudio(简称VS)是美国微软公司的开发工具包系列产品,是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。通俗的讲,是一款`编译器。
visual studio code是美国微软公司是一个项目:运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web 和云应用的跨平台源代码编辑器。通俗地讲,是一款编辑器
② 跨平台运行能力不一样。
Visual Studio 各种功能只能在 Windows 和 macOS(Mac OS X )之上运行,不能跳跃各平台编辑。
visual studio code是一款真正的跨平台编辑器,可以在用户习惯的平台上使用,而不是非要迁徙到 Windows上。
③ 功能不一样
Visual Studio是目前最流行的Windows平台应用程序的集成开发环境。提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序,开发新的程序。
visual studio code集成了所有一款现代编辑器所应该具备的特性,包括语法高亮,可定制的热键绑定,括号匹配以及代码片段收集,这款编辑器也拥有对 Git 的开箱即用的支持。
怎么用C#创建项目。以及整个工程目录的层次关系。
创建新项目的流程
① 在首页面创建新项目
② 类型选择为控制台应用程序
③ 配置项目
这块主要是确定名称(该项目的名称以及解决方案的名称) 和 项目的存储位置。
这里想额外介绍的是项目
和解决方案
的关系。项目是解决方案的子集,也就是说,一个解决方案下可以创建多个项目,在一个项目中,有一个带着主函数的主类以及其他可以额外声明若干个类。
具体的层级关系展示图
④ 最后注意一下菜单栏和工具栏
基础知识一遍过
一、输入输出
想运行Hello World
,想测试A+B
的结果,那么就离不开最最最基础的输出和输入的使用。
在C#中,想要进行输入输出,离不开使用Console类帮助咱们完成需求。
C# Console 类主要用于控制台应用程序的输入和输岀操作
以下四个是常用的输入输出时候需要调用的方法
输入语句的格式是Console.ReadLine();注意下,C#输入语句,默认输入的都是字符串,如果想要输入整型数据要进行转换。
现在演示定义个字符串来接收输入的字符串信息: string str = Console.ReadLine();
倘若想输入整型或者浮点型的数据,C#中有两种数据转换的方式。
① Convert 函数
int num;
num = Convert.ToInt32(Console.ReadLine());
因为 Console.ReadLine() 只接受字符串格式的数据。
函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型
② Parse 函数
C# Parse 方法用于将字符串类型转换成任意类型,具体的语法形式如下。
数据类型 变量名 = 数据类型.Parse(字符串类型的值);
二、C# 数据类型
在 C# 中,变量分为以下几种类型:
值类型(Value types)
引用类型(Reference types)
指针类型(Pointer types)
① 值类型
值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。
值类型直接包含数据
。
② 引用类型
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们指的是一个内存位置
。
③ 指针类型
指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。
汇总起来,是这张思维导图
如果想要得到一个类型或一个变量在特定平台上的准确尺寸,可以使用sizeof 运算符
。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸
三、运算符
每个语言都差不多,就反复查阐述了,不清楚的可以随时查文档来横扫疏漏
C#运算符
四、判断语句、循环语句
判断语句和循环语句也是各个语句都差不多的
五、复杂数据类型的认知
①常量
在 C# 中,不能以 C 和 C++ 中通常采用的方式使用 #define 预处理器指令定义常量。
常量是使用 const 关键字来定义的,const定义出来的是静态常量。
静态常量这儿记住两点吧:
① 随着类的加载而加载,即,一个类生成,它也就生成了。
②可使用类直接调用。其数值在全局具有通用性。即,我在函数1中修改了它,那么我在函数4中再使用这个静态常量的时候,它不是零,不是其他值,就是函数1中修改后的结果。
②枚举类型
使用enum来定义枚举类型。在枚举类型中,可以理解为用从0 开始的计数的整数来指代放在其中的数据,比如0代表Spring了,1代表Summer了。
//1、默认写法
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
//2、自定义类型
enum ErrorCode : ushort
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
//枚举类型中,是从0开始的,那么Season这个枚举只有0,1,2,3
var c = (Season)3;
Console.WriteLine(c);//输出结果:Winter
//再测试一个数字4
var d = (Season)4;
Console.WriteLine(d);//输出结果:4
③结构类型
使用 struct 关键字定义结构类型,结构体中可以写方法
public struct Coords
{
//结构体里面可以写方法
public Coords(double x,double y)
{
X = x;
Y = y;
}
//这里也是方法,而且显示的是存在引用了
public double X {
get; }
public double Y {
get; }
//C# 中 $ 符号的作用是C#6.0中新出现的一个特性,也即是字符串的拼接优化。
// ToString ()就是将一个非字符串类型的值转换为字符串
//=>是Lambad表达式:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/lambda-operator#code-try-0
//写文章时候倒腾它
public override string ToString() => $"{X},{Y}";
}
六、数组
数组的声明,和c和c++不太同吧。C和c++里面写的是double g[N][N]
java和C#应该是写
double[] array1 = new double[5];
对于C#而言,二维数组也确实需要注意
二维数组和常规的不同了
二维数组的声明方式:元素的类型[ , ] 数组的名称=new 元素的类型[行数,列数];
int[,] arr = new int[4, 3]
一维数组中,Length属性代表数组中的元素的个数,而二维数组中的Length指的是行*列 的结果
a、使用foreach可以简单快速的遍历。
b、数组的GetLength()可以得到指定纬度的长度。其方法传入0 可以得到行数。 传入1 可以得到列数
int[,] arr = new int[,] {
{
1, 2 }, {
3, 4 }, {
5, 6 }, {
7, 8 } };
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.WriteLine (arr[i, j]);
}
}
总结
C#的基础知识中,清楚以上我罗列的这些就很好了。
大多数和其他语言差不多的,语句上都是if、while、for等等;
数据类型上都是int、double、long 等。
我认为唯一值得注意的是const声明的默认是静态常量
和二维数组的声明
下一篇直接使用基础知识写一个小Demo,然后着手直接进入C#的高级特性了
边栏推荐
- Flet教程之 17 Card卡片组件 基础入门(教程含源码)
- Common SQL statement collation: MySQL
- How much do you know about excel formula?
- Stm32f1 and stm32subeide programming example -max7219 drives 8-bit 7-segment nixie tube (based on SPI)
- Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
- SwiftUI Swift 内功之如何在 Swift 中进行自动三角函数计算
- In my limited software testing experience, a full-time summary of automation testing experience
- About the application of writing shell script JSON in JMeter
- There are ways to improve self-discipline and self-control
- The post-90s resigned and started a business, saying they would kill cloud database
猜你喜欢
聊聊SOC启动(十) 内核启动先导知识
Leetcode - interview question 17.24 maximum submatrix
Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
Technology sharing | packet capturing analysis TCP protocol
OneDNS助力高校行业网络安全
测试优惠券要怎么写测试用例?
Activity lifecycle
Talk about SOC startup (x) kernel startup pilot knowledge
基于华为云IOT设计智能称重系统(STM32)
[system design] index monitoring and alarm system
随机推荐
Android 面试知识点
【滤波跟踪】基于matlab捷联惯导仿真【含Matlab源码 1935期】
Vuthink proper installation process
R语言使用magick包的image_mosaic函数和image_flatten函数把多张图片堆叠在一起形成堆叠组合图像(Stack layers on top of each other)
Some opinions and code implementation of Siou loss: more powerful learning for bounding box regression zhora gevorgyan
Flet教程之 16 Tabs 选项卡控件 基础入门(教程含源码)
Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
【问道】编译原理
Tsinghua Yaoban programmers, online marriage was scolded?
Internet Protocol
What is high cohesion and low coupling?
Flet教程之 17 Card卡片组件 基础入门(教程含源码)
Poor math students who once dropped out of school won the fields award this year
《论文阅读》Neural Approaches to Conversational AI(1)
清华姚班程序员,网上征婚被骂?
Flet教程之 19 VerticalDivider 分隔符组件 基础入门(教程含源码)
【纹理特征提取】基于matlab局部二值模式LBP图像纹理特征提取【含Matlab源码 1931期】
【系统设计】指标监控和告警系统
Verilog design responder [with source code]
EasyUI learn to organize notes