首页 > 编程语言 >c#基础

c#基础

时间:2023-04-21 10:46:57浏览次数:38  
标签:变量 c# age 基础 运算符 int 赋值 C#

原文地址 zhuanlan.zhihu.com

c#基础

残枫cps残枫cps

​目录收起C#中的关键字C#的注释C#的常量C#的变量算法——交换C#的数据类型C#的类型转换C#标识符的命名规则C#的算术运算符(一)C#的算术运算符(二)C#的算术运算符(三)C#的比较运算符C#的逻辑运算符(一)C#的赋值运算符C#的运算符优先级

Ctrl F5 :直接运行

F5:调试

F1:文档

C#中的关键字

关键字,是一些被C#规定了用途的重要单词。

在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。

关键字 class ,这个关键字的用途是声明类。比如上面例子中,类名叫做Program。

关键字 namespace ,这个关键字的用途是声明“命名空间”。比如上面例子中,命名空间叫做MyApp1。

关键字 using ,这个关键字的用途是导入命名空间。比如这句:using System.Text; 作用是导入System.Text命名空间中的类。

关键字 static (静态的)、 void (无返回值)、 string (字符串类型)。常常在Main()方法的声明中看到:static void Main(string[] args)

Main() 方法是 C# 中的特殊方法,是程序的入口,就是说,如果没有 Main ()方法,程序就无法启动。

注意:你会发现,所有关键字都是由小写字母组成的,C#语言中,大小写是严格区分的。

C#的注释

注释,是代码中的一些“说明性文字”。注释本身不会参与程序的编译和运行,仅仅供程序员阅读。

注释分为:单行注释、多行注释、文档注释。

单行注释的符号是2条斜线(请注意斜线的方向),2条斜线右侧的内容就是注释,左侧的代码不会受影响。

多行注释以“/”开始,以“/”结束,之间的内容就是注释,可以包含多行。

文档注释写在类、方法或属性(以后会学到)的前面,它的符号是3条斜线“///”。

注意:代码中的Console.WriteLine()与之前的Console.Write()不同,后者不换行,而前者会在打印之后换行。

C#的常量

常量,顾名思义,就是“不会改变的量”。

我们平时书写的数字(比如12.85)、字符(比如'F')、字符串(比如"谢谢"),它们都属于“字面常量”。

有一些常量既重要又容易出错,比如圆周率π的值为3.1415926......,所以,我们常常会使用自定义常量。请看下面的代码:

需要解释2个关键字: const 关键字,表明PI是一个常量; double 关键字,表明PI的类型为“双精度浮点型”(一种精度很高的数字类型)。

你会发现,这段代码中使用了2次圆周率(周长、面积),但是因为使用自定义常量,所以字面常量3.1415926只书写了一次。这样做避免了重复书写导致的错误。

运行效果:

还有一点要特别注意:常量在声明时赋值,之后是不能修改的

C#的变量

变量能够存储数据,并且与常量不同,变量存储的数据可以修改。比如今年18岁,明年可以变成19岁。

使用变量分为3步:声明、赋值、使用

声明变量的语法:数据类型 变量名;

给变量赋值的语法:变量名=值;

请阅读下面的代码:

运行结果如此:

变量的声明和赋值可以同时完成,上面代码Main()方法中的前两行可以改写为:

int age=18;//声明并赋值

算法——交换

交换2个变量的值,就如同交换两只杯子中的饮料:一杯满满的牛奶和一杯满满的咖啡,怎样才能互换呢?

变量的交换也如此。两个变量的交换也需要一只“空杯子”,就是中间变量

string a="振刚";//第一个变量string b="文峰";//第二个变量string temp;//中间变量//第一步:将变量a赋值给中间变量

temp=a;//如同牛奶倒入空杯//第二步:将变量b赋值给变量a

a=b;//如同咖啡倒入牛奶杯//第三步:将中间变量赋值给变量b

b=temp;//如同空杯中的牛奶倒入咖啡杯//此时交换完成,变量a存储了“文峰”,b存储了“振刚”

上面三个步骤就能交换2个变量,你学会了吗?

这种解决实际问题的步骤就叫做“算法”交换就是最常用的一种算法。

C#的数据类型

我们知道声明变量需要写出数据类型,我们今天要学习的是最常用的几种类型。

字符类型 char ,存储用 '' (单引号)括起来的一个字符,例如:

char sex='男';//存储性别

字符串类型 string ,存储用“”(双引号)括起来的一串字符,例如:

string address="北京市宣武区牛街北口";//存储地址

整数类型 int ,存储整数,例如:

int age=23;//存储年龄

双精度浮点型 double ,存储小数,例如:

double salary=7991.63;//存储工资

以上四种是最常用的数据类型,其他常用类型,我们会随着课程深入慢慢介绍。

需要注意的是,某种类型的变量,只能存储这种类型的数据,否则,可能会出错。

C#的类型转换

上一节我们学习了4种数据类型,也提到每种类型的变量只能存这种类型的数据。可是,有时候真的需要把不同类型的值放在一起运算,比如这种:3.5+8 这时候怎么办呢?有下面2种情况:

自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。

以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。

请看这个例子:double d=2; 2的精度显然低于变量d的精度,所以2会自动转换为2.0然后赋值给d。

再看这个例子:int i=3.0;变量i的精度低于3.0,但是由于i已经声明为int型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。

强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:

int i=(int)3.0;

数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。

需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。

C#标识符的命名规则

程序中的变量名、常量名、类名、方法名,都叫做标识符。C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错。这套规则简单说有下面三条:

①标识符只能由英文字母、数字和下划线组成,不能包含空格和其他字符。

错误的标识符声明:string $user; //错在使用了其他字符

②变量名不能用数字开头。

错误的标识符声明:double 6h;//错在用数字开头

③不能用关键字当变量名。

错误的标识符声明:char static ;//错在用关键字static做变量名

C#的算术运算符(一)

计算机程序,当然少不了“计算”,要计算就必须了解运算符。今天,我们先学习算术运算符中的加、减、乘、除。

加:+ 。加号有2个用途:当用加号连接两个数字时,会计算出这两个数字的和。比如:

Console.WriteLine(9+2.2);//输出11.2

另一种情况,当加号两边包含字符串的时候,会把两边的表达式连接成新的字符串。比如:

Console.WriteLine(9+"2.2");//输出92.2,因为"2.2"是字符串,所以9也被转换为"9",+起的作用是连接字符串

减:- 。减号的作用就是减法。比如:

Console.WriteLine(15-23);//输出-8

乘:* 。乘号的作用是求2数的乘积。比如:

Console.WriteLine(0.8*****3);//输出2.4

除:/ 。除号的作用是求2数相除的商。比如:

Console.WriteLine(2/0.5);//输出4.0

但是,2个整数相除,结果仅保留整数部分,小数部分会被舍去。

Console.WriteLine(5/10);//输出0

C#的算术运算符(二)

学习取余运算符

C#中的取余运算符就是%。上一节学习的除号,作用是求2个数字相除的商,而取余运算符%的作用是求两个数字相除的余数。比如:

Console.WriteLine(19/5);//求19除以5的商,输出3

Console.WriteLine(19%5);//求19除以5的余数,输出4(商3余4)

编程中,%常常用来检查一个数字是否能被另一个数字整除。比如下面的代码片段:

int number = 29;

Console.WriteLine(number%2);//求number除以2的余数

如果输出0,表示没有余数,即number能够被2整除(是偶数);如果输出1,表示有余数,即number不能被2整除(是奇数)。

C#的算术运算符(三)

这一节学习两个特别的运算符++--

++,叫做自加运算符。比如你今年18岁,明年长了一岁,用代码写出来是这样:

int age=18;//今年18岁

age=age+1;//明年,在今年的年龄上加1岁

也可以写成这样:

int age=18;//今年18岁

age++;//明年,在今年的年龄上加1岁

age++;与age=age+1;作用相同,都是变量的值+1

--,叫做自减运算符。同理,你今年18岁,用了XX护肤水以后,明年变成17岁了,可以这样写:

int age=18;//今年18岁

age--;//等同于 age=age-1;

另外,age++;与age--;也可以写作++age;或--age;

但请注意:如果与其他运算在同一语句中,++写在变量前面或后面,算法不一样,请看下例:

Console.WriteLine(age++);作用等同于下面两句:

Console.WriteLine(age);//先打印age=age+1;//后自加

Console.WriteLine(++age);作用等同于下面两句:

age=age+1;//先自加Console.WriteLine(age);//后打印

你看,运算顺序不一样吧,所以输出的结果也不会相同。

C#的比较运算符

比较数字大小,或者比较数字相等的运算符是比较运算符。C#中的比较运算符有:

注意:表示两个值相等的“等于”是由2个“=”组成的。

比较运算的结果,都是布尔类型( bool ),bool类型我们是第一次提到,它表示逻辑上的真(成立)假(不成立)。真与假用关键字 true 和 false 表示。

上面程序中, x>=y 不成立会返回 false , x<=y 成立,会返回 true 。运行结果:

C#的逻辑运算符(一)

逻辑运算符用来连接多个 bool 类型表达式,实现多个条件的复合判断。C#中的逻辑运算符包括:逻辑非( ! )、逻辑与( && )、逻辑或( || )

逻辑非用来对某一个 bool 类型表达式取反,即“真变假”或“假变真”。请看下面的代码:

Console.WriteLine(1 > 0);//条件表达式为true,输出True

Console.WriteLine(!(1 > 0));//用逻辑非对条件表达式取反,输出False

逻辑与用来判断 2 个 bool 类型表达式是否同时为 true 。请看下面的代码:

int x = 5, y = 2;//同时声明2个int型变量并赋值

Console.WriteLine(x>3 && y>3);//判断x>3和y>3是否同时为true,由于y>3为false,所以整个表达式为false

只有当&&两边的表达式均为 true 时,整个表达式才为 true ;若任意一个表达式为 false ,整个表达式即为 false 。

逻辑或用来判断2个 bool 类型表达式中是否有一个为 true 。请看下面的代码:

int x = 5, y = 2;//同时声明2个int型变量并赋值

Console.WriteLine(x>3 || y>3);//判断x>3和y>3是否有一个为true,由于x>3为true,所以整个表达式为true

只要||两边的表达式有一个为 true ,整个表达式即为 true ;若两边的表达式均为 false ,整个表达式为 false 。

对比一下,就是说: && 运算符,两边同真才算真,一边为假就算假; || 运算符,一边为真即为真,两边同假才是假。

C#的赋值运算符

前面,我们已经学过一个赋值运算符“=”,这次我们学习一下其他的赋值运算符:

加赋值“+=”:先加后赋值。请看下面的例子:

int x=5;

x += 2;//这句等同于x=x+2;执行后,x的值为7

减赋值“-=”:先减后赋值。请看下面的例子:

int x=5;

x -= 2;//这句等同于x=x-2;执行后,x的值为3

乘赋值“*=”:先乘后赋值。请看下面的例子:

int x=5;

x = 2;//这句等同于x=x2;执行后,x的值为10

除赋值“/=”:先除后赋值。请看下面的例子:

int x=5;

x /= 2;//这句等同于x=x/2;执行后,x的值为2

取余赋值“%=”:先取余后赋值。请看下面的例子:

int x=5;

x %= 2;//这句等同于x=x%2;执行后,x的值为1

与其他运算符从左向右计算不同,赋值运算符从右向左计算。

C#的运算符优先级

前面我们学习了那么多运算符,如果编程中同时使用了多个运算符,到底哪一个会先运算呢?这就是优先级的问题。C#运算符的优先级请参考下面的顺序:

括号。学数学的时候我们就知道,要先计算括号里面的内容。C#语言也是一样,如果有多层括号,要从里向外计算。括号优先级最高。

一元运算符。有些运算符两边有2个操作数,比如2+3、6%5等等,这些叫做二元运算符。只有一个操作数的叫做一元运算符,它们的优先级高于二元运算符。一元运算符包括:++(自加) 、 --(自减) 、 !(逻辑非)

③*(乘)、/(除)、%(取余)

+(加)、-(减)

>(大于)、<(小于)、>=(大于等于)、<=(小于等于)

==(等于)、!=(不等于)

&&(逻辑与)

||(逻辑或)

赋值运算符。包括:=、+=、-=、*=、/=、%=。

另外,还需要注意一点:优先级相同的运算符从左向右计算(赋值运算符相反)

请看下面这段代码:

bool b = 20 - (15 - 8) * 2 > 10 && (2 % 2 * 2 + 2) > 2;

Console.WriteLine(b);

分析:首先计算优先级最高的括号,(15-8)得到7,(2%22+2)则需要先计算%和,后算+,结果是2,表达式就变成了:

bool b=20-7*2>10&&2>2;

接下来优先级最高的是7*2,然后是减法,变成:

bool b=6>10&&2>2;

继续计算两个大于号,得到:

bool b=false&&false;

最后的结果当然是false:

编辑于 2023-04-14 15:14・IP 属地山东开启赞赏赞赏开启后,读者将可以付费支持你的创作。C#​赞同​添加评论​分享​喜欢​收藏​设置

标签:变量,c#,age,基础,运算符,int,赋值,C#
From: https://www.cnblogs.com/cps666/p/17339505.html

相关文章

  • pytorch_ssd 代码注释
    box_utils.py#-*-coding:utf-8-*-importtorchdefpoint_form(boxes):"""Convertprior_boxesto(xmin,ymin,xmax,ymax)representationforcomparisontopointformgroundtruthdata.Args:boxes:(tensor)center-s......
  • scapy函数介绍
    1、读取报文>>>packets=rdpcap("d.pcap")2、查看原始数据>>>raw(packets[0])b'\x00\x16>3\x02d\x00\x16>\\\xf2\xa3\x08\x00E\x00\x00(\x00\x01\x00\x00@\x063\x18\xc0\xa8\x05;\xb5*\xcc\xa9$\xfc\x01\x......
  • 检查java的class文件版本
     packagetest;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;publicclassCheckClassVersion{publicstaticvoidmain(String[]......
  • c#数组
    原文地址zhuanlan.zhihu.comc#数组残枫cps​目录收起C#的声明数组和赋值C#访问数组元素算法——查找(一)算法——查找(二)C#的foreach关键字C#的二维数组的声明和访问C#的声明数组和赋值编程中有这样一种情形:我们需要存储多个同类型数据。比如,保存1600个学生的年龄。是否需......
  • 【DP】LeetCode 312. 戳气球
    题目链接312.戳气球思路参考动态规划套路解决戳气球问题分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums[i]为结尾的状态;dp[i][j]分别表示以nums1[i]和nums......
  • easyExcel导出单个文件多个sheet页-注解方式
    easyExcel注解方式导出,为什么要用注解方式?注解方式更简单、更方便,相比非注解的方式减少了大量代码。但是,注解方式不够灵活,精确度也不高,比如列宽,注解方式仅支持int类型,最大255个字符,而非注解方式就要精确的多,可以随意设置。所以,对于要求比较高的、复杂的Excel,还是推荐使用非注解......
  • c#结构
    原文地址zhuanlan.zhihu.comc#结构残枫cps​目录收起C#用流程图描述程序逻辑C#中判断和分支C#中if...else条件结构C#中嵌套的if结构C#中多重if结构C#中else与if的匹配C#的条件运算符:三元C#的switch结构C#循环流程图和while循环C#算法——求和C#中for循环C#中do…while循环C#......
  • C#写一套最全的MySQL帮助类(包括增删改查)
    介绍说明:这个帮助类包含了六个主要的方法:ExecuteNonQuery、ExecuteScalar、ExecuteQuery、ExecuteQuery(泛型)、Insert、Update和Delete。其中,ExecuteNonQuery用于执行不返回结果集的SQL语句;ExecuteScalar用于执行一个查询,并返回结果集中第一行的第一列;ExecuteQuery用于执行一个查询......
  • ASEMI代理ADM3051CRZ-REEL7原装ADI车规级ADM3051CRZ-REEL7
    编辑:llASEMI代理ADM3051CRZ-REEL7原装ADI车规级ADM3051CRZ-REEL7型号:ADM3051CRZ-REEL7品牌:ADI/亚德诺封装:SOIC-8批号:2023+引脚数量:8安装类型:表面贴装型ADM3051CRZ-REEL7汽车芯片ADM3051CRZ-REEL7特征物理层CAN收发器VCC上的5V操作符合ISO11898标准高达1Mbps的高速数......
  • Oracle 创建定时任务 DBMS_JOB
    需求:创建一个每天凌晨一点执行的任务(存储过程)1、创建存储过程--一般存储过程语法CREATEORREPLACEPROCEDUREUPDATE_LABEL_TABLE_DATE_DTISBEGIN UPDATEIC_CO_BAE_INFOSETDT=TO_CHAR(TRUNC(SYSDATE-1),'yyyy-MM-dd'); UPDATEIC_RG_RRG_INFO_V1SETDT=TO_CHAR(......