探寻“糖心”的秘密:一场关于成熟与自由的邂逅

核心内容摘要

倾听时代的鼓点阿阿阿铜铜铜铜铜铜铜铜铜锵锵锵锵,一场穿越古今_1
跨越次元的热浪:东京热app,定义移动端的终极感官美学

泪落珍珠,铁铸柔情:圣采儿的别样风华

前言上一篇我们搭建好了开发环境这一篇我们来学习 C# 的基础语法。

C# 是一门非常优雅的编程语言语法清晰功能强大。

别担心我会用最简单的方式来讲解保证你能看懂。

1.

什么是变量变量就像是一个盒子用来存放数据。

你可以给盒子起个名字然后往里面放东西。

// 声明一个变量存放年龄intage25;// 声明一个变量存放名字stringname张三;// 声明一个变量存放价格doubleprice

9

9;这段代码展示了如何声明和使用变量。

int是整数类型用于存储没有小数部分的数字。

string是字符串类型用于存储文本。

double是浮点类型用于存储带小数点的数字。

等号是赋值操作符把右边的值赋给左边的变量。

每个语句最后加分号表示这行代码结束。

1.

常用数据类型C# 提供了多种数据类型用来存储不同种类的数据。

整数类型用于存储整数有int、long、short等不同大小。

int最常用范围大约是 -21 亿到 21 亿对于大多数场景够用了。

long范围更大可以存储更大的整数。

short范围较小节省内存。

浮点类型用于存储带小数点的数字。

double是双精度浮点数精度高范围大。

float是单精度浮点数精度稍低占用内存少。

decimal是精确小数类型特别适合存储金额等需要精确计算的场景。

布尔类型用于存储真或假只有两个值true和false。

bool通常用于条件判断的结果。

比如判断一个数字是否大于零结果就是bool类型。

字符串类型用于存储文本。

可以存储单个字符、一段话、一篇文章等。

string是引用类型可以存储任意长度的文本。

字符串有很多方法比如获取长度、查找子串、替换字符等用起来很方便。

1.

var关键字如果你懒得写类型可以用var编译器会自动推断。

varage25;// 自动推断为 intvarname张三;// 自动推断为 stringvarprice

9

9;// 自动推断为 doublevarisStudenttrue;// 自动推断为 bool这段代码使用var关键字声明变量编译器会根据赋值的表达式自动推断变量类型。

age赋值为25是整数所以推断为int。

name赋值为字符串字面量推断为string。

price赋值为浮点数字面量推断为double。

isStudent赋值为true推断为bool。

var只是让你少写代码变量的类型在编译时就确定了不是动态类型。

这意味着你不能给一个var变量先赋整数然后赋字符串因为类型不匹配。

不过在同一行用var声明多个变量时它们的类型必须相同。

注意var不能用于字段声明只能在局部变量中使用。

而且var必须初始化因为编译器需要根据初始值推断类型。

如果你只是想声明一个变量而不初始化就不能用var。

运算符C# 提供了各种运算符用于进行计算和比较。

2.

算术运算符算术运算符用于数学计算加减乘除这些基本运算。

inta10;intb3;intsumab;// 加法13intdiffa-b;// 减法7intproducta*b;// 乘法30intquotienta/b;// 除法3整数除法intremaindera%b;// 取余1加法运算符把两个数加起来。

减法运算符-从第一个数中减去第二个数。

乘法运算符*计算两个数的积。

除法运算符/用第一个数除以第二个数。

取余运算符%计算第一个数除以第二个数的余数。

注意整数除法会丢弃小数部分。

比如 10 除以 3结果是 3不是

333。

如果需要浮点数结果要用double类型。

doublex

1

0;doubley

0;doubleresultx/y;// 结果是

3.

..这段代码用double类型进行除法结果是浮点数。

x除以y得到

333…保留了小数部分。

如果你想控制小数位数可以使用格式化字符串。

2.

比较运算符比较运算符用于比较两个值返回结果是true或false。

inta10;intb20;boolgreaterab;// 大于falseboollessab;// 小于trueboolequalab;// 等于falseboolnotNotEquala!b;// 不等于trueboolgeab;// 大于等于falseboolleab;// 小于等于true大于运算符判断第一个数是否大于第二个数。

小于运算符判断第一个数是否小于第二个数。

等于运算符判断两个数是否相等。

不等于运算符!判断两个数是否不等。

大于等于运算符判断第一个数是否大于或等于第二个数。

小于等于运算符判断第一个数是否小于或等于第二个数。

这些运算符不仅用于数字也可以用于字符串。

字符串比较是按字典序比较的比较的是每个字符的 Unicode 码。

strings1apple;strings2banana;boolresults1s2;// true因为 a 的码小于 b

2.

逻辑运算符逻辑运算符用于组合布尔值进行逻辑运算。

boolatrue;boolbfalse;boolandab;// 逻辑与false两个都为真才为真boolora||b;// 逻辑或true一个为真就为真boolnot!a;// 逻辑非false真变假假变真逻辑与运算符只有当两个操作数都是true时结果才为true。

如果第一个操作数是false就不会计算第二个操作数这叫短路求值。

逻辑或运算符||只要有一个操作数是true结果就是true。

如果第一个操作数是true就不会计算第二个操作数。

逻辑非运算符!把true变成false把false变成true。

短路求值可以提高性能。

比如你要判断一个对象是否不为null并且某个属性为true可以写成obj ! null obj.IsValid。

如果obj是null第二个表达式就不会执行避免了空引用异常。

字符串操作字符串是 C# 中非常重要的数据类型用于存储和处理文本信息。

3.

字符串拼接字符串拼接就是把多个字符串连接成一个字符串。

stringfirstName张;stringlastName三;stringfullNamefirstName lastName;// 张 三// 使用字符串插值stringgreeting$你好{fullName};// 你好张 三加法运算符可以用于拼接字符串。

firstName加上空格再加上lastName得到全名。

字符串插值用$开头的字符串可以在大括号中嵌入变量或表达式。

字符串插值比加法运算符更方便特别是需要拼接多个变量时。

而且字符串插值在编译时会转换成String.Format调用性能更好。

你可以在大括号中写任何 C# 表达式比如方法调用、数学运算等。

intage25;stringmessage$明年你{age1}岁;// 明年你26岁这段代码演示了字符串插值中可以写表达式。

age 1是一个加法表达式结果是 26然后嵌入到字符串中。

字符串插值会在运行时计算表达式所以你可以动态生成内容。

3.

字符串常用方法字符串类型提供了很多有用的方法。

stringtextHello, World!;// 获取长度intlengthtext.Length;// 13// 转大写stringuppertext.ToUpper();// HELLO, WORLD!// 转小写stringlowertext.ToLower();// hello, world!// 是否包含boolcontainstext.Contains(Hello);// true// 替换stringreplacedtext.Replace(World,C#);// Hello, C#!// 分割string[]partstext.Split(,);// [Hello, World!]Length属性返回字符串的字符数。

注意不是字节数是字符数因为 C# 的字符串使用 Unicode 编码一个字符可能占用多个字节。

ToUpper方法把字符串转换成大写所有字母都变成大写。

ToLower方法把字符串转换成小写所有字母都变成小写。

Contains方法检查字符串是否包含指定的子字符串返回true或false。

Replace方法把字符串中的某个子字符串替换成另一个字符串。

Split方法根据指定的分隔符把字符串分割成字符串数组返回所有部分。

stringpath/home/user/documents;string[]componentspath.Split(/);// components [, home, user, documents]stringjoinedstring.Join(\\,components);// joined \\home\\user\\documents这段代码演示了字符串的分割和拼接。

Split(/)用斜杠分割路径得到各个部分。

string.Join方法把字符串数组连接成一个字符串用指定的分隔符分开。

这里用反斜杠连接因为 Windows 路径使用反斜杠。

数组基础数组用于存储多个相同类型的值。

4.

声明数组// 声明一个整数数组int[]numbers{1,2,3,4,5};// 声明一个字符串数组string[]names{张三,李四,王五};// 声明并指定大小int[]scoresnewint[10];// 创建一个长度为 10 的数组元素都初始化为 0这段代码演示了三种声明数组的方式。

第一种是用花括号初始化器直接在声明时初始化数组元素。

第二种是声明字符串数组也用花括号初始化。

第三种是用new关键字指定数组大小这会创建一个指定长度的数组所有元素都初始化为默认值。

数组的大小在创建时就确定了之后不能改变。

如果你需要一个可以动态改变大小的集合应该用List。

数组的索引从 0 开始所以长度为 5 的数组最后一个元素的索引是 4。

4.

访问数组元素int[]numbers{10,20,30,40,50};// 访问第一个元素intfirstnumbers[0];// 10// 访问最后一个元素intlastnumbers[4];// 50// 修改元素numbers[2]100;// 第三个元素变成 100// 遍历数组foreach(intnuminnumbers){Console.WriteLine(num);}用方括号访问数组元素方括号里是索引。

索引从 0 开始所以numbers[0]是第一个元素numbers[4]是第五个元素。

在 C#

0 及以上版本你还可以使用^运算符进行倒数索引例如numbers[^1]表示最后一个元素numbers[^2]表示倒数第二个元素。

修改数组元素也是用方括号直接赋值就行。

这里把第三个元素改成 100。

foreach循环遍历数组中的所有元素依次取出每个元素。

在循环体中你可以对每个元素进行操作。

string[]names{张三,李四,王五};for(inti0;inames.Length;i){Console.WriteLine($第{i1}个{names[i]});}这段代码用for循环遍历数组同时显示索引。

for循环有三个部分初始化、条件、迭代。

初始化在循环开始前执行一次这里设置i为 0。

条件在每次循环开始前检查如果为true就继续循环。

迭代在每次循环结束后执行这里让i加 1。

条件判断条件判断让程序能够根据不同情况执行不同的代码。

5.

if语句if语句是最基本的条件判断。

intage20;if(age

{Console.WriteLine(你已经成年了);}if(age

{Console.WriteLine(你还是未成年人);}if语句检查条件如果条件为true就执行大括号中的代码。

这里检查age是否大于或等于 18如果就输出成年信息。

第二个if检查age是否小于 18如果就输出未成年人信息。

注意if条件后面必须是一个布尔表达式也就是结果为true或false的表达式。

你可以使用比较运算符、逻辑运算符、变量等。

intscore85;if(score

{Console.WriteLine(优秀);}elseif(score

{Console.WriteLine(良好);}elseif(score

{Console.WriteLine(及格);}else{Console.WriteLine(不及格);}这段代码演示了多条件判断。

if else if结构会依次检查每个条件第一个为true的条件的代码块会被执行后面的都不会检查。

else表示前面的条件都不满足时的默认处理。

5.

switch语句switch语句用于多个值的匹配。

intday3;switch(day){

:Console.WriteLine(星期

;break;

:Console.WriteLine(星期

;break;

:Console.WriteLine(星期

;break;default:Console.WriteLine(其他);break;}switch语句根据表达式的值跳转到对应的case。

这里day的值是 3所以会执行case 3的代码。

每个case后面都要有break否则会继续执行下一个case的代码。

default是默认处理当所有case都不匹配时执行。

switch语句可以匹配整数、字符串、枚举等类型。

但是switch语句的条件必须是常量表达式不能是变量或方法调用。

stringgradeA;switch(grade){caseA:Console.WriteLine(优秀);break;caseB:Console.WriteLine(良好);break;caseC:Console.WriteLine(及格);break;default:Console.WriteLine(待努力);break;}这段代码演示了字符串的switch匹配。

grade的值是A所以会执行第一个case的代码。

字符串比较是区分大小写的所以a和A是不同的。

如果你希望不区分大小写可以先把字符串转换成大写或小写再比较。

循环循环让程序能够重复执行某段代码。

6.

for循环for循环是最常用的循环之一。

// 打印 1 到 10for(inti1;i10;i){Console.WriteLine(i);}// 计算阶乘数intn5;intfactorial1;for(inti1;in;i){factorial*i;}Console.WriteLine(${n}的阶乘是{factorial});// 5的阶乘是120for循环有三个部分初始化、条件、迭代。

初始化在循环开始前执行一次这里设置i为 1。

条件在每次循环开始前检查如果为true就继续循环。

迭代在每次循环结束后执行这里让i加 1。

所以这个循环会执行 10 次i的值分别是 1 到 10。

第二个示例计算阶乘数。

factorial初始化为 1然后在循环中不断乘以i。

1 乘以 1 等于 12 乘以 1 等于 23 乘以 2 等于 6依此类推。

最后factorial的值是 120也就是 5 的阶乘。

6.

while循环while循环在条件为true时持续执行。

intcount0;while(count

{Console.WriteLine($当前计数{count});count;}Console.WriteLine(循环结束);while循环在每次循环开始前检查条件。

如果条件为true就执行循环体。

这个循环会检查count是否小于 5如果是就执行循环体。

循环体中先打印当前计数然后把count加 1。

当count变成 5 时条件count 5变成false循环结束。

所以这个循环会执行 5 次count的值分别是 0 到 4。

循环结束后打印循环结束。

6.

foreach循环foreach循环用于遍历集合。

string[]fruits{苹果,香蕉,橙子};foreach(stringfruitinfruits){Console.WriteLine($我喜欢{fruit});}foreach循环遍历数组或集合中的每个元素。

fruits是一个字符串数组foreach循环会依次取出每个元素赋值给fruit变量然后执行循环体。

所以这个循环会执行 3 次依次打印每个水果。

foreach循环不需要你关心索引直接处理元素。

这比for循环更简洁特别是在你不需要索引的时候。

但是foreach循环不能修改集合如果你想添加或删除元素要用for循环或者把元素复制到一个新集合。

ListintnumbersnewListint{1,2,3,4,5};foreach(intnuminnumbers){Console.WriteLine(num*

;}numbers.Add(

;// foreach 循环外可以修改这段代码演示了foreach循环的使用。

numbers是一个整数列表foreach循环遍历每个元素并打印它的两倍。

foreach循环结束后我们仍然可以修改列表这里添加了元素 6。

七、

总结这篇文章我们学习了 C# 的基础语法。

包括变量和数据类型了解了如何声明和使用各种类型的变量。

学习了运算符包括算术运算符、比较运算符和逻辑运算符。

学习了字符串操作包括字符串拼接、字符串方法。

学习了数组基础包括声明数组和访问数组元素。

学习了条件判断包括if语句和switch语句。

学习了循环包括for循环、while循环和foreach循环。

这些是编程的基础掌握了它们你就能写出很多有用的程序了。

下一篇预告下一篇文章我们将学习面向对象编程的基础包括类、对象、属性、方法等。

面向对象是 C# 的核心特性是现代编程的重要思想。

通过学习面向对象你将能够设计出结构清晰、易于维护的代码写出更加专业和优雅的程序。

练习题编写一个程序计算 1 到 100 之间所有偶数的和创建一个字符串数组存储你喜欢的电影名称然后遍历输出编写一个程序判断一个年份是否是闰年能被4整除但不能被100整除或者能被400整除使用字符串方法将一个句子中的所有单词首字母转换为大写创建一个整数数组找出其中的最大值和最小值

六间房隐藏房间隐藏地点-六间房隐藏房间隐藏地点应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123