超快速成,零基础快速掌握C#开发中最重要的概念
admin
2024-01-26 07:12:38
0次

文章目录

    • 初步
    • 数学计算和函数
    • 变量和数据类型
    • 布尔类型和判断
    • 数组和for循环
    • while循环与跳出

初步

学习C#自然推荐使用宇宙最强IDE Visual Studio,初学下载社区版,安装过程中,将除了移动开发之外的带有C#和.Net字样的选项都勾上。

安装完成后,打开VS->创建新项目->C#控制台应用->下一步->项目名称、位置随便写->下一步->框架选.Net6.0->点击创建,然后就会看到我们的第一个CSharp程序。

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

代码的可读性是非常强的,Console表示控制台,WriteLine就是写下一行,合起来就是在命令行中写一行话,这行话就是Hello World!。

C#中,通过//进行单行注释/**/进行多行注释。

按下F5就可以执行这段程序了,弹出命令行,内容为

Hello, World!E:\Documents\00\1116\CSharp\MyFirstCS\bin\Debug\net6.0\MyFirstCS.exe (进程 17312)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

这里额外说一段,对于.Net5.0以前的版本,需要在这个语句外面套一层Main函数,Main函数外面套一层Class,Class外面再套一层namespace。

数学计算和函数

常用的数学计算可通过运算符来实现,比如加减乘除,就是+-*\,此外还有%表示求余,例如

Console.WriteLine(5%3);

命令行中出现2。

除了Lisp风格的语言之外,绝大多数编程语言对四则混合运算的支持都有良好的可读性,比如2+3*5这种式子,其实是无需详述的。

但四则混合运算其实并不能完全满足我们的需求,最起码很多情况下需要用到平方,为了实现这个功能,就需要自定义函数

double square(double x)
{return x * x;
}
Console.WriteLine(square(3.5));

F5执行之后,命令行输出了12.25。

接下来,将上面的表达式对应到y=f(x)=x2y=f(x)=x^2y=f(x)=x2这样的函数表达式中

d1 f(d2 x)
{return y;
}

也就是说,类比数学中的概念,square为函数名,x为自变量,y为因变量。而在编程领域,一般把x叫做输入参数,y则叫做返回值。

而d1和d2所对应的double,则为输入变量和输出变量的数据类型。

变量和数据类型

从数学的角度,可以非常简单粗暴地理解数据类型,即数据类型有两类,一类是小数,一类是整数。对于希望速成的初学者来说,整数用int表示,小数用double表示,当然编程中一般把小数叫做浮点数。

这时就有一个尖锐的问题,"Hello World"又是个啥?

好吧你赢了,那就再加一种数据类型,就是字符串。而且字符串和数值还有区别,小数和整数尽管类型不同,但总可以互相计算的,比如小数和整数相加,最后得到的是个整数;但小数和字符串相加,最后应该没法得到值。

也就是说,四则混合运算对字符串不适用。

你可能不信,于是写出了这行代码

Console.WriteLine("Hello" + "World");

好吧你又赢了,+只在高中数学中表示加法,在编程语言中只是一个代码,既可以将其定义为加法,也可以将其定义为字符串拼接。

有了数据类型,就可以定义变量

double square(double x){return x * x;
}
double a = 1.5;
int b = 2;
Console.WriteLine(square(a)+b);

最后命令行输出4.25,square(a)是对浮点数做平方,然后输出了浮点数,而b是整型,根据输出结果可以直到,浮点型和整型相加,最后的结果仍然是浮点型。

布尔类型和判断

数值计算和解析计算的区别在于,后者是无限的,而前者是有限的。网上经常说π\piπ又算到了多少多少位,就讲出了这个区别。π\piπ显然是无穷多位的,但计算机只能表现出有限的位数,这种位数的限制,使得整型和浮点型内部产生了分裂。

众所周知,计算机操作的是二进制的逻辑电路,用32位二进制,可以表示的最大整数就是232=42949672962^{32}=4294967296232=4294967296,要是还想考虑一下000,那就再要减一,要是再考虑负数,就要再减半。

C#中提供了多种位数的整型和浮点型,其中整型又包括有符号和无符号两种,所谓有符号,就是有正有负;无符号就是0和正整数。比如double就是64位浮点型;int是32位有符号整型;uint是32位无符号整型。

当数据位数降到1位时,一位的二进制就只剩下两个值000和111,仿佛是一个开关,于是量变引起了质变,布尔类型诞生了。

这个时候,000和111被赋予了非常重要的现实意义,用于表示无或有,以及错和对,即false和true。

有了对错,就可以判断,在几乎所有编程语言中,都用if表示判断

void trueOrFalse(bool c){if(c){Console.WriteLine("你是对的");}else{Console.WriteLine("我是错的");}
}
trueOrFalse(true);

运行之后,输出你是对的。

抛开if不谈,这个函数也和之前定义的不太一样,这个函数没有返回值,所以其输出的数据类型为void。

大多数人接触if时的学习案例往往是这个

void bigOrlittle(int a, int b)
{if (a > b){Console.WriteLine($"{a}>{b}");}else if (a < b){Console.WriteLine($"{a}<{b}");}else{Console.WriteLine($"{a}={b}");}}
bigOrlittle(3, 5);
//输出为 3<5

这个案例给出了完整的判断语句,if...else if...else,中间的else if可以为无穷多个。据说有一款游戏中,堆了一个19亿次判断的屎山,被坊间传为笑谈。

其中,<是也是一种运算符,其输入为两个数值,输出为布尔型变量。如果左边的小于右边的,就输出true,否则就输出false。这类运算符被统称为条件运算符,包括全等判断==,不等判断!=以及>,<,>=,<=。

数组和for循环

前文提到,除了数值之外,字符串是另外一种数据类型,这两种类型之间并不能直接运算。而且前文又提到,数值类型和二进制的位数是息息相关的,32位整型能表示的最大数值不超过2322^{32}232。

但字符串似乎并没有这种限制,只要计算机内存扛得住,似乎可以在双引号中写入任意长度的字符串。这种奇怪的特性表明,字符串并不是一种单纯的数据类型,而是由字符组成的串。

所谓字符,就是诸如'a','b','c'这样单个的字母或者文字,它们和数值类型都要受到二进制位数的限制。C#中的char类型由两个字节组成,也就是16位二进制,最多可以涵盖65536个单字。而字符串,就是由这一个个字符拼接而成。

推此及彼,数值类型也应该有类似的串的结构,此即数组,其声明方式如下

int[] arr = new int[5];
Console.WriteLine(arr);
// System.Int32[]

int[]表示整型数组,new表示创建一个数组的实例,后面int[5]表似乎这个数组的长度为5。最后调用Console.WriteLine来打印arr,结果并没有输出数组的内容。

先不考虑数组是否支持用WriteLine,arr在创建出来之后,其实并没有为其赋值,所以非要输出,输出为空也是符合逻辑的。

数组赋值的方法也很便捷,arr[0]=1表示将arr中的第0个值赋为1。千万要注意,C#中,索引序号是从0开始的。

接下来又出现了一个严重的问题,如果要创建一个有1000个元素的数组,那给数组初始化不得写1000行?要是按行数算工资的话老板不得亏死?

所以接下来就引入另一个概念,for循环,如下

int[] arr = new int[5];
for (int i = 0; i < 5; i = i+1)
{arr[i] = i * i;
}

在(int i=0; i<5; i=i+1)中,int i声明了一个变量,i=0表示这个变量从0开始,i=i+1表示每次循环,i都变成i+1,i<5表示只有在i<5的情况下才执行循环。

由于i=i+1这种写法过于繁琐,C#提供了自增运算符i++,再意义上与i=i+1等价。

花括号中是循环体,对数组arr逐个进行赋值。唯一比较可惜的是,Console.WriteLine并不能直接把数组中的内容打印出来,为了打印数组中的内容,还要再写个循环

for (int i = 0; i < 5; i++)
{Console.WriteLine(arr[i])
}

当然,对于数组操作,这里其实推荐这种写法

foreach (var e in arr)
{Console.WriteLine(e);
}

foreach表示遍历数组中的所有元素,再(var e in arr)中,var表示自动判定数组内元素的数据类型,e则为遍历到的arr中的元素创建一个临时的变量。这样就把arr中所有的元素打印出来了。

0
1
4
9
16

当然,圈子兜了这么远,主要目的并不是初始化数组,而是为了讲述for循环,因为数组初始化有更加便捷的方式

int[] arr = {0,1,4,9,16}

while循环与跳出

其实有了for循环就已经可以解决几乎所有循环问题了,但从逻辑上来说,for循环并不存粹,里面加入了大量私货。毕竟对循环而言,其实只需要一个循环条件就可以了,符合这个条件就循环,不符合就跳出,while就是干这个的,其使用方法与if十分相似

double a = 1.5
while(a*a<100){a++;Console.WriteLine(a);
}

但while中没有else,也就是说,只能判断一个条件,如果有多个跳出条件,可以用break。

while(a*a<100){a++;if(a>5){//当a>5时,跳出循环break;}Console.WriteLine(a);
}

另一种情况是,如果并不想把所有a都打印出来,则可以通过continue来跳过某次循环,下面打印出平方小于100的所有奇数

a = 0
while(a*a<100){a++;if(a%2==0){//当a>5时,跳出循环continue;}Console.WriteLine(a);
}

相关内容

热门资讯

蜻蜓订购APP贵金属订购非法期...   蜻蜓订购APP以"投资平台"名义对外宣传,主打贵金属期货(订购)交易。该平台一方面强调自身"正规...
悟空订购APP非法期货交易欺骗...   近期,有投资者反映,“悟空订购APP”等平台以白银、贵金属订购为名,宣传所谓“高收益”“低门槛”...
小赢淘金APP期货投资骗局,平...   “小赢淘金”之流,最擅长的就是用“注册送现金”、“充值返券”的糖衣炮弹来引流。别天真地以为那是福...
八方淘金APP非法期货交易欺骗...   警惕!八方生财、每日淘金、小赢淘金、悟空订购、蜻蜓订购、斗金订购等APP均涉嫌非法期货交易!  ...
智易购APP贵金属订购交易骗局...   很多人看到“3元起投”“充值送福利”“操作简单”“随时提现”这类宣传,很容易把智易购APP当成普...
喜玛银庄APP商品订购投资骗局...   喜玛银庄APP白银、铂金“现货订购”骗局警示:无资质平台涉嫌非法期货交易,投资者爆仓后如何维权?...
吉鑫乐享APP炒贵金属订购交易...   近期,多名投资者反映在“吉鑫乐享APP”进行贵金属投资时遭遇严重亏损,甚至血本无归。看似正规的“...
易掘金APP虚假期货投资骗局,...   “易掘金”的APP它打着“高收益、灵活投资”的旗号,宣称通过“商品订购”就能轻松赚钱,吸引了不少...
在大吉订购APP订购交易亏损被...   近期,不少投资者反映在“大吉订购App”上投资白银、铂金等商品遭遇严重亏损。该平台宣称提供现货订...
铂银壹号APP商品订购交易亏损...   许多中小投资者误以为网上的“商品现货订购”是合规合法的理财渠道,殊不知这背后隐藏着巨大的合规风险...
兴鑫淘金APP贵金属订购交易亏...   白银、贵金属或其他商品类投资,除国家批准的正规期货交易场所及持牌期货公司外,市面上大量第三方交易...
铂银掘金APP无资质的违规平台...   铂银掘金等平台的投资者,往往是被“注册送现金”“充值返现券”“首单免亏”等广告话术吸引,进而下载...
八方淘金APP订购交易不合规,...   “八方淘金APP”“铂银掘金APP”“铂银壹号APP”等软件被指以“现货订购”为名,实际采用高杠...
在指尖订购APP订购商品亏损被...   指尖订购APP这类平台,表面是“订购交易”,实则是披着电商外衣的非法期货陷阱。绝大多数投资者被蒙...
在犀贝易购APP做商品订购交易...   市面上打着“现货投资”“贵金属交易”旗号的APP并不少,但真正合规、受监管的平台并不多。犀贝易购...
易达淘金APP虚假商品订购交易...   易达淘金APP存在严重的虚假宣传与违规交易行为。该平台打着“商品订购”的旗号,实则通过不合规的交...
大浪淘金APP白银订购亏损被骗...   大浪淘金APP最隐蔽的套路,在于其完全封闭的内盘交易系统。表面上,它宣称与国际贵金属市场接轨;实...
一品好购APP上订购白银出现亏...   一品好购APP原名“一品订购”,运营方为上海宝智未来信息技术有限公司。近期不少投资者反映在该平台...
九州订购APP贵金属订购投资骗...   九州订购APP正通过抖.音、快手、今日头条等平台大量投放投资广告,用“5元起投”“充值返现”“0...
坚锅淘金APP交易软件并不正规...   当前,市面上大量所谓的“现货商城订购”交易软件,早已偏离了正常的实物商品买卖,演变为高杠杆、高手...