本帖最后由 沧海一声 于 2022-10-6 17:35 编辑
本贴旨在
0基础
入门C#,希望对你有所帮助
阅读须知(建议阅读):
1.第二阶段正在更新,争取暑假前完成。
2.本贴目前非最终版本,目前会不断添补/删除/修改内容,敬请留意,也在修改风格,让它变得更加有趣,
3.更新目标为完成基本语法规则说明,
4. 部分资源来自网络,侵权联系删除,
5.为了观看体验, 有一些图请放大查看
7.本文仍在以精修+更新方式,请耐心等待(后面会增加习题)
8.欢迎回复支持/提出疑惑9.需要鼓励希望大家能踊跃支持--初二学生
导读--
阅读C#入门指南的-- 本文不是换汤不换药,不是用不同编程语言输出“Hello World”的方法,是对之前文章重新编排和整理,希望你们喜欢
各位朋友,欢迎看到本版帖子,较上文帖子相比,它有了新的变化
1.一次性完成/订正完毕,没有反复查看的烦恼
2.更正帖子逻辑,重新编排了内容以保证从易到难
3.增加了分类--概念课 练习课 提高课
概念课--讲解C#基本方法和概念
提高课--对讲的内容进行补充深入
练习课--练习概念课的方法和概念
4.补充了更多的内容,大量讲解重置,以保证通俗易懂
学习建议:
1.准备一本笔记本抄写和整理可以帮助你形成对代码的肌肉记忆并梳理逻辑
2.每天加以练习
学习本文技巧并随时加以练习,笔者会视情况继续写的
3.不要加以放弃
学习语言是长跑,你可能会从入门到放弃,但逐步进步会有更好的成就感
第一章
概念课----
走进C#语言的世界 √了解编程语言发挥的作用
√初步了解C语言
为什么需要编程语言:
我们知道,计算机只能理解二进制语言:0和1
举例:
但是,我们人怎么可能打出拥有几千万个含有0和1的代码让计算机去执行呢?这时,我们就需要编程语言了
编程语言类似于计算机和人之间搭起沟通的桥梁,你也可以理解成一款翻译软件,
将计算机语言转换成我们相对比较好理解的语言。这一过程称为编译。
而承担桥梁这一角色的则是编译器
本文涉及C#语言,当你能熟练掌握他以后,可以这么做:
- 开发大型游戏
- 生成网站以供访问,
- 生成APP程序来使用
练习课--
安装VS软件,
迈开学习的第一步
√成功安装VS Code并配置环境
注意:
根据@00006666 的建议是使用 Visual Studio (简称 VS),但本人考虑后认为VS 虽然写代码上更加强大,但安装过程较为麻烦,所以本文现在还是以Visual Studio Code (简称 VS Code),各位可以自己定夺,在此也感谢他的建议
1.配置C#代码环境。
工欲善其事,必先利其器。我们需要有好的工具才能开始学习,因此下面是你应该完成的准备
(1)从官网下载Visual Studio Code(下文会简称VS CODE)安装包,官网:Download Visual Studio Code - Mac, Linux, Windows
(2)运行安装包:注意勾选“添加到path变量”,其他默认即可。
(3)安装中文语言包:扩展--搜索简体中文(启动时软件也会提醒安装中文语言包)
(4)安装C#扩展,在扩展--搜索C#并安装C#插件即可。
(5)下载.net6.0:下载 .NET 6.0 (Linux、macOS 和 Windows) (microsoft.com)
网盘资源打包:
https://pan.huang1111.cn/s/qNVAi3
2.创建新的.Net项目:
(1)选择“文件(F)--打开文件夹”
(2)在随意位置创建一个新文件夹并选定。
(3)你会在“资源管理器”里看见自己创建的文件夹。
选择“终端(T)--新建终端”,输入命令- dotnet new console -f net6.0
复制代码 (4)VS CODE会创建包含“Hello World”程序的C#项目
如果想要运行程序,直接输入运行:
Program.cs是存储程序代码的文件(本图来自网上,侵权请联系删除)
我们会在Program.cs文件编写并修改代码
概念课--
了解程序开发中的不同角色
√了解C#语言,Net框架,CLR
√区分它们发挥的不同作用
相信各位已经完成了练习课的环境配置了吧,
下面我们就来解答一下:为什么?
我们知道C#是编程语言,
而CLR就是 公共服务开发库,在程序运行时提供协助,例如代码执行/内存管理.Net框架(网络开发框架)就是一个独立程序包,包含CLR等开发环境
而C#语言依赖.Net框架
第二章--
练习课--
学习向终端输出文本
学习目标
√熟练掌握Console.WriteLine和Console.Write方法
√学习使用代码注释
看上图,并关注这个语句:- Console.WriteLine(“Hello World”);
- //这是初始代码,负责向终端输出文本
复制代码 实际上,在不同的代码学习中,
输出“Hello World”已是一种传统,
这里建议自己删除所有代码再重新打一次
注意:编写代码时,你可能会有这样的错误
- Console.WriteLine("Hello,World")
- //没有分号
- Console.WriteLine(‘Hello,World’);
- //使用单引号
- ConsoleWriteLine.("Hello,World");
- //顿号位置不对
复制代码
因此,编写代码需要注意:
1.区分大小写
2.符号的使用
①(句号)和, (逗号)的的区别 ②末尾使用分号 ③不要省略双引号
3.中文和英文字符的不同
4.输入的准确(提高正确率)
注意观察代码下的红色波浪线,这提示代码可能出现了问题
(2)这里使用的 // 是代码注释,在代码行行首添加指示编译器暂时忽略该行代码,下文将频繁使用
那么如何使用多行注释呢?
下文将详细介绍代码注释作用
Ⅱ提示:那么有其他方法可以输出文本吗?
使用Console.Write方法输出文本- Console.Write("Hello");
- Console.Write("World");
- /*
- 发现与上文一样,会输出同样的文本“Hello World”
- Write方法会把多行内容合并成一行
复制代码 你可以这么理解:
WrteLine方法使用了 Enter键,你输入的内容会自动换行
Write方法会像拼积木一样把多个语句拼在一起
概念课--
了解C#语言基本概念
目标:
√了解 方法,类和命名空间的基本概念,能梳理它们之间的关系
√能够了解using方法的使用
仍然和之前一样,是这熟悉的初始代码
这时,可能会疑惑:为什么程序一开始都是这行代码:
这里,我们需要先了解方法,类和命名空间的基本概念
首先,方法是基本单位,它后面总是会跟着小尾巴 ( ),类似于一个个工具,可以帮我们完成特定任务:
例如Console.WrteLine方法可以帮助我们输出文本,
然后,类则是储存着方法的容器(或者说“拥有方法”)
紧接着,为了防止许许多多的类重复(为了消除歧义),我们需要“类的姓氏”--命名空间,
最后,成千上万方法的类的集合被称为”.Net类库“
但是
为了编写代码,C#将一部分的.Net库集合到代码开发中
例如你接下来会非常熟悉的数据类型
而编辑器会创建一个和你项目名一样的命名空间:
总的来说,我们可以在程序中创建不同的命名空间,每个命名空间里又可以有不同的类,里面有许许多多的方法。
这也就是说方法,类和命名空间是一晃套一环的(类似于上下级的关系)
而using方法可以指示在特定的命名空间寻找类和方法
例如using system指示在system这个命名空间寻找类和方法
命名空间 → 类 → 方法
我们以后也会继续提及,帮助熟悉概念。如果现在仍未掌握无须放弃,日后会逐渐巩固这些概念。
第三章--
概念课
认识不同的数据类型
√明白数据类型的概念
√了解常见的数据类型,能够分辨不同类型
查看我们这行代码:
- Console.WriteLine("Hello,World");
复制代码 那你可能会问:
那么这一行代码还有什么可讲呢?请关注后半部分“Hello,World”,在C#中他有一个名称“文本字符串”,在C#中,储存不同文本值的容器称为“数据类型”
char: 字母/数字字符
string: 字母/数字
int:数字整数(没有小数点)
decimal:有小数点的十进制文本
bool:表示布尔值(之后会详细讲解)编个口诀各位也可以自己编,觉得能记住就好
注意:
1.关于char和string的类型承蒙@记录微笑 大佬指点
原文:
- char和string的区别不是字符多少,char是System.Char的别名,string是System.String的别名,两者所属的类不一样,所有的静态方法都不一样。另外,声明char用单引号,string用双引号。
- 详见:
- https://learn.microsoft.com/zh-c ... /builtin-types/char
复制代码 特此纠正原来的错误,敬请注意
2.int和string的区别体现在性质上:
string/char用于演示,就比如一份ppt
int/decimal用于数学计算中,是数学计算中的一个元素
提高课--
深入了解数据类型
√了解有/无符号整型类型
√了解整型类型和浮点数类型
√查看数据类型的值范围
这就是本课的思维导图,(想快速了解可以看这个)
下面让我一一分解
首先,整型类型和浮点数类型怎么分呢?
整型类型就是只有整数(没有小数点),例如我们前面提到的int
浮点数类型则是有小数点的类型,例如decimal类型。
比如:1,100,350就属于整型类型
3.1415926,5.25就属于浮点数类型
接下来,整型类型可以继续细分,正负数的概念相信大家初中的时候应该了解过
有符号整型类型范围都包括正负数,举几个例子:5,-5,6,-3
无符号整型类型只有正数,负数可以忽略不计,举个例子,6,800是正数--无符号整型类型,-9,-6是负数--不是
问为什么没有小数点?如果有这个疑惑,建议再阅读一次
那么在了解不同的数据类型后,我们怎么求它们的最大值和最小值呢?
使用这条代码:
- $“数据类型 : {数据类型 . MinValue} to {数据类型 , MaxValue};
复制代码 举个例子:
- $“数据类型 : {int . MinValue} to {int , MaxValue};
复制代码 关于它的范围如何?大家可以自己试一下
第四章--
接触多姿多彩的变量世界
√清楚变量的基本概念
√学习声明和检索变量
凝神盯住这个杯子,他可是跟这次的主题息息相关的
现在我们来讲“变量”这一部分
1.变量是什么概念呢?
它就类似于容器(上文提到的杯子),能够储存一定的值
而储存的值类似于杯子里的饮料(白开水,可乐……),根据数据类型的不同有所变化
▲关于数据类型请查阅前文
2.声明变量值:
这个过程类似于找来一个杯子再倒入饮料
- 方法
- 数据类型 变量名 =值
- 举例:
- bool a = true;
- string name = “Mike”;
- int number = 2;
复制代码 注意:
1.我们可以发现,声明string和char变量值需要加 “ ”
这也就是说,我们需要分清楚不同数据类型的区别
2.从右往左进行赋值
3.注意变量声明规则:
(1)不允许使用特殊字符,如@#¥%&*
(2)不能以数字开头
(3)区分大小写,采用骆驼式命名法:
首单词以小写字母开头,后续每一个单词首字母大写。
(4)不能使用C#关键字,
这里来几个反面例子:
- string @food = apple;
- char Projectname = a;
- string place = string;
复制代码 这些统统都是大忌(。_。)
⚪关于声明这件事,一个知识点:var
可以理解成现在的一证通用,它会根据你输入的值“变身“成不同的数据类型true是不是布尔值?此时var就会切换为bool类型
不过,提示各位:前期还是老老实实按数据类型来输入,这样有利于来熟悉
该string就string,int也别被让它跑,bool千万也别遗忘
3.检索变量值:
现在我们已经新建了变量并引入了值,那么要怎么获取变量的值呢?
这里有一个通用方法:
举例:
- string number = “100”;
- Console.WriteLine(number);
- 输出
- 100
复制代码
现在我们来回顾一下,我们学习了变量的概念,学习了声明和检索变量,这是一个重点,需要认真把握。
第四章--
练习课
学习使用转义字符序列
√了解转义字符序列
√能够灵活使用转义字符序列来修改文本
1.转义字符序列
(1)概念:运行时的特殊指令,表示你希望该运行时插入会影响字符串输出的特殊字符
或者说简单点,就是手机永远无法显示的WPS/Office的字符,你明白了吗?
(2)常用类型
\n | 添加新行 | \t | 添加制表符(8个空格宽) | \r | 回车符 | \u | Unicode编码字符
| 使用方法,直接把它们输出(复制粘贴)到文本字符串里,例如:
- Console.WrteLine("HelloWorld")
- Console.WrteLine("Hello\nWorld")
- Console.WrteLine("Hello\tWorld")
复制代码 输出:
- Hello World
- Hello
- World
- Hello World
复制代码 这就是转义字符序列的神奇魅力,现在给大家一个练习:- Rain is falling all around,
- It falls on field and tree,
- It rains on the umbrella here,
- And on the ships at sea.
- by R. L. Stevenson, 1850-1894
复制代码
根据上文效果把下文这堆乱七八糟的文章修改一下:所以说各位也可以发现,转义字符序列有助于提高文本的输出效果- Rain is falling all around,It falls on field and tree,It rains on the umbrella here,And on the ships at sea.by ‘R. L. Stevenson’, 1850-1894
复制代码
就是我们所说的排版工作,千万不要忽视
练习课--
学习输出带有变量的句子
√能够使用字符串内插和字符串串联
√能添加小数精度/百分比格式/格式化货币,了解“计算区域性”概念
如果我们要输出“I am 8 years old”并把8作为变量age,我们之前会使用之前学习到的Console.Write方法:- int age = 8;
- Console.WriteL("I am")
- Console.WriteL(age)
- Console.WriteL("years old")
复制代码 但是
在学习了今天的课程后,我们将会有更多的选择:
①字符串串联
类似于我们爱吃的烧烤,“+”类似于竹签,把不同字词穿起来
举个例子:
- 举例:
- string name = Mike;
- Console.WrteLine("Hello,"+ name);
- 输出:
- Hello,Mike
复制代码 和烧烤一样,我么可以继续增加文本字符串和变量
怎么样,你学费了吗
注意:在这个过程中,需要避免中间变量
- 源代码
- string firstName = "John";
- string greeting = "Hi";
- string sentence = greeting + " " + firstName + ".";
- Console.WriteLine(sentence);
- 修改后
- string firstName = "John";
- string greeting = "Hi";
- Console.WriteLine(greeting + " " + firstName + ".");
复制代码 意思就是说,可以用字符串串联输出的文本,不需要单独创建一个变量储存
再简单就是,1+1能一步解就不要搞错方程,代码要有简洁性
但是,
能不能再简单点?
当然可以!
- int age = 8;
- Console.WriteLine("I am {0} old",age)
复制代码
对比一下,看看和上面有何不同?
没错,我们使用了占位符?
占位符可以理解成变量的序号,他会对号入座解析成后面对应的变量
这样可以使用较少的序号
注意:你可能会诧异为什么从0开始,
注意这是代码编辑时大部分的常理
②字符串内插
它是目前升起的一颗新星,因此我们也需要重点掌握,它的基础为上文提到的占位符
格式:
根据专业术语来说
字符串内插=内插表达式+模板
当文本字符串以“$”开头时就会变成模板,当变量用{ }圈起时就会变成内插表达式
所以
字符串内插=$文本字符串+{变量}
所以一开始的代码有可以这样
- int age = 8;
- Console.WriteLine("I am {age} old")
复制代码
下面,我们就以字符串内插为基础
学习输出带有货币/百分比/小数的文本
食用方法:
在字符串内插的基础上,在变量后面添加对应的字符
例如:
- int price = 8;
- Console.WriteLine(It is {price:c}");
- 输出
- It is 8 ¥
复制代码
注意:输出货币会受到 计算区域性 的影响
什么意思?意思就是计算机会根据你计算机所处的位置输出不同的结果,例如不同时区的时间显示
如果你使用一台美国的计算机,那么将会输出$
如果你在.Net编辑器,那么将会输出¤,它是不同地区货币的通用单位
② :N会指示根据千位,千万位等来进行分级,:N数字 可以说明保留的小数精度
例如:- int number = 100000000;
- Console.WriteLine(It is {number:N}");
- 输出
- It is 1,0000,0000
复制代码
③:P 可以显示百分比格式,:P数字 可以控制小数精度
- int time = 99.99
- Console.WriteLine([ DISCUZ_CODE_29 ]quot;It is {time:P1);
- 输出
- It is 99.9%
复制代码
那么经过今天的学习,我们学习了三种输出带有变量的句子,学习给文本字符串赋予格式
快去炫耀一下
第五章
概念课--
深入了解方法
√了解有状态方法和无状态方法
√学习创建类的实例
√了解void方法,
√了解重载方法
坏消息是:本课知识点非常多
好消息是:这一课是本章唯一一课
我们先从重载方法开始讲
重载方法是允许以不同方式调用方法或提供不同数据类型
举个通俗的例子:- Consle.WriteLine("123456");
复制代码 Consle.WriteLine允许输出string/char/bool等数据类型,是不是很通俗易懂?然后,是void方法
我们知道,方法有的会返回值,有的不会返回值,
例如Conosle.Read方法会返回用户输入首字符的ACSLL码
- Console.Read("100")
- 输出
- 01100100
复制代码 void方法就是完成时不返回值
最后是有状态方法和无状态方法
我们知道,电脑里有内存地址来储存数据
有状态方法会与计算机的内存进行交互,他会更改应用程序的状态
反而来讲,无状态方法就是不与内存进行交互,无需改变应用程序的状态
例如:Console.WriteLine方法就是无状态方法
结语:
恭喜,第一阶段的学习结束,在本文中我们学习了C#的基本概念,了解了构成C#语言的众多基础
在下一阶段的学习中,我们会学习数组,布尔表达式等进一步知识,会了解.Net程序的运行基础和设计方案,
期待再次相见
PS:
非常抱歉,由于笔者是初二学生,平日时间较为紧迫,故此想把C#的内容分阶段叙述,希望大家加以谅解。
|