欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

我的ASP.NET学习笔记010C#语言基础

程序员文章站 2022-04-13 10:27:50
cSharp_1_概述 名词描述 C# 是一门语言,语法与javascript、C、C++、java相近,这些语言都是比C语言的语系中发展而来。 .net framework (Framework是框架的意思)asp.net软件的编译和运行平台,计算机必须安装了这个软件才可以运行我们编写的C#应用程 ......

cSharp_1_概述

名词描述

C#

是一门语言,语法与javascriptCC++java相近,这些语言都是比C语言的语系中发展而来。

 

.net framework

(Framework是框架的意思)asp.net软件的编译和运行平台,计算机必须安装了这个软件才可以运行我们编写的C#应用程序。不过windows7.0以后的操作系统都要自动安装了这个软件。

 

mono是由第三方团队开发的让C#程序代码运行于多平台的一个框架。相当于另一个.net framework

 

 

 

新建一个软件项目

.net中程序软件是项目的形式的存在的,一个项目就是包含软件中所有的代码、图片、样式、等等所有资源文件的集合。

 

新建一个C#控制台应用程序项目

“文件”菜单 à 新建 à 项目 à 在弹出的“新建项目”窗口中依次选择 à visual C# à 控制台应用程序 à 添加项目名称 à 选择项目的存储位置 à 选择建立新的解决方案à 还是要添加到当前已经打开的解决方案中

 

完成“控制台应用程序”的创建之后。就可以在“解决方案”面板中看到当前项目的所有文件了。

 

Mian主函数

 

其中,program.cs文件中的main主函数就是程序的入口函数,包括其中的代码,会被自动执行,而写在mian主函数之外的代码则没不会被执行,除非在main中对其进行调用。

 

Main注意 M 大写

修饰为static 

返回值为void或int 

参数为字符串数组(C#中可选) 

应用程序开始执行的地方

 

 

 

扩展名.cs

C#程序代码文件的扩展名就是.cs

 

编译执行源代码 

F5:启动调试 

Ctrl+F5:开始执行(不调试) 

 

控制台输入输出语句

输出语句

控制台的相关操作都通过Console这个类完成,包括输入与输出操作 

常用输出方法介绍 

Console.Write(…)不换行输出 

Console.WriteLine(…)换行输出,在输出内容的末尾加一个换行符 

 

常用参数使用语法 

Console.WriteLine("您传入的第一个参数为:"+ss);

Console.WriteLine("您传入的第二个参数为:{0}", args[1]);

 

 

占位符

Console.WriteLine中的占位符写法{0}{1},其概念就好像是在字符串中留一个填空题中的空,由后面的参数来填。

控制台输入

程序一般有零到多个输入,有些输入是执行时由用户输入的 

使用Console.ReadXXX()系列的方法可以完成接收用户输入的操作 

常用方法 

Console.Read():一次返回一个字符(ASCII码) 

Console.ReadLine():返回用户在控制台输入的一行字符串,按回车结束。

注释

单行注释  //

多行注释  /*    */

 

通过快捷键来注释

选中需要注释的代码 à Ctrl+k Ctrl+c

通过快捷键来取消注释

选中需要取消注释的代码 à Ctrl+k Ctrl+u

 

练习:

1、在vs中创建一个控制台应用程序,用户手动输入男方姓名,输入女方姓名,输出信息“恭喜XX先生和XX女士,百年好和、白头偕老”。

 

2、在vs中创建一个控制台应用程序,模拟一个atm取款的功能,假设帐户原本有一千元,让用户输入一个数字,原帐户金额减去取款金额,将还剩多少钱显示出来。( C#中的字符串转整数 int.Parse(字符串)、声明整数类型是 int i = 1 ; )

 

 

C#中的数据类型

C#是一门强类型的编程语言,而javascript是一门弱类型的编程语言。

强类型语言是指该语言中的变量必须严格遵循类型的限制。就是说一个变量被声明之后,永远只能存储指定类型的数据。

 

C#中的整数类型

类型标识符

描述

可表示的数值范围

sbyte

8位有符号整数

-128 ~ +127

Byte字节

(bit位代表一个二进数)

8位无符号整数

0 ~ 255

Short短整型

16位有符号整数

-32768 ~ +32767

ushort

16位无符号整数

0 ~ 65535

int 整型

32位有符号整数

-2147483648 ~ +2147483647

uint

32位无符号整数

0 ~ 4294967295

long

64位有符号整数

-9223372036854775805 ~ +9223372036854775807

ulong

64位无符号整数

0 ~ 264-1

Char有时可以被当做整型来看待。

 

C#中变量的定义

C#中声明一个变量必须要同时声明这个变量的类型。

数据类型 变量名=变量值

比如:int i =10;

 

浮点类型

用于存储实数,浮点的数据类型包含两种:

单精度浮点型(float)

float类型是32

取值范围:在+ 1.5×10-45 ~ 3.4×1038之间,精度为7位数。

双精度浮点型(double)

double类型是64位宽。

取值范围:为+5.0×10-324 ~ 1.7×10308之间,精度为15~16位数

 

注意:floatdouble不适合用于进行高精度且频繁的运算,否则在处理小数的位数限制的最后一位时会自动的四舍五入,造成精度的损失。

 

小数类型(decimal

16个字节(128),主要为了满足高精度的金融、科学运算等领域。

小数类型数据的取值范围和精度如下:

     取值范围在+ 1.0×10-28 ~ 7.9×1028之间,精度为29位数。

 

数值类型的表示方法

C#中如果只写一个整数数字而不带代表的类型标识,那么这个整数数字会被自动自定为int类型。如果写一个带有小数的实数数字而不带代表的类型标识,那么这个实数数字会被自动自定为double类型。

可以用如下代码来证明:

Console.WriteLine((12).GetType().ToString());

Console.WriteLine((12.01).GetType().ToString());

 

 

通过类型标识符来定义数值的类型

123f 代表float类型数值123.0

      518u                 代表uint类型的数值518

      36897123ul      代表ulong类型的数值36897123

      22.1m               代表decimal类型的数值22.1

      12.68                代表double类型的数值12.68

      36              代表int类型的数值36

 

字符类型

在计算机中,一切数据最终都会被转换为二进制,字符也不例外,但是二进制只能用来存储数字,因此Char类型中存储的是一个字符在unicode码表中的位置编号。

字符类型的定义:

char 变量名 = ‘单个字符’ ;

注意:

1、 char类型的值必须用单引号括起来。

2、 单引号内的有效字符必须且只能是一个。

3、 值不能是单引号或反斜杠。

 

C#中的转义字符

 

 
   

 

Bool布尔类型

布尔类型只有两个值truefalse

bool c = 5>6;

c = true ;

Console.WriteLine(c);

 

 

GetType()方法

用于获取一个变量或数值的类型,示例:

float i = 100f;

Console.WriteLine(i.GetType().ToString());

 

Int16代表short

Int32代表int

Int64代表long

Singel代表flaot

 

引用类型

String字符串类型

用于保存字符和文本数据。String类型的值是包含在一对双引号之间的。

 

c#string 的本质是一个char类型的数组。

String可以直接被当成char类型的数组来用。

string i = "This is 665";

Console.WriteLine(i[1]);

 

Char类型的数组同样可以被转换为字符串

char[] cArr = {'H','e','l','l','o' };

string cStr = new string(cArr);

Console.WriteLine(cStr);

 

逐字字符串@

逐字字符串@用以避免书写转义字符串,将字符串中的特殊符号当成字符来对待。

string cStr = @"this is \n 665";

Console.WriteLine(cStr);

 

其写法就是在字符串前面加上一个@符号。

 

Object类型

C#中所有的对象、变量、类型,我们都可以称之为是object的子类。

 

对于任何一个变量、对象、类型,我们都可以将其存储在object类型的变量之中。

 

object obj = "this is \n 665";

obj = 123;

obj = true;

Console.WriteLine(obj);

 

 

练习:

编写程序实现下图效果:

使用合适的数据类型定义相关变量(255以下用byte、小数是float、身份证qq号可以用string

输出输入的结果

 
   

 

 

C#中的类型转换

数据类型在一定条件下是可以相互转换的。

C#允许使用两种转换的方式:隐式转换和显式转换。

隐式转换

隐式转换是自动完成的、不需要用户手动声明就可以完成的转换过程。

这种转换一般是“向上转换”,即由占存储空间小的数据类型向占存储空间大的数据类型转换。

示例:

byte bNum = 255;

short sNum = bNum;

int iNum = sNum;

long lNum = iNum;

float fNum = lNum;

double dNum = fNum;

string strNum = ""+dNum; //用字符串与数值相加的时候,数值类型会自动的被隐式转换为string

Console.WriteLine(strNum);

 

C#中变量的声明

变量只是一个容器,用于存储具体的数值,并且这个容器里的数值是可以变的。

声明变量的过程

数据类型 变量名;

比如:int iNum;

变量名 = 表达式;

比如:iNum = 5;

当然多数情况下我们将两步合为一步:

int iNum = 5;

同时定义多个同类型的变量

比如:

int a, b, c;

同时定义并赋值多个同类型的变量

比如:

int a=1, b=2, c=3;

 

显式类型转换

就是指必须由用户手动声明的转换过程。

强制类型转换

格式:  (类型名称)表达式

将表达式的值的类型转换为类型名称所标识的类型。

 

示例:int i = (int)’a’;

注意:在强制类型转换的过程中有可能对原本的数值造损失。

decimal dd = 12.3456m;

int iNum = (int)dd;

Console.WriteLine(iNum);

 

 

数据类型之间的转换

toString()

toString()将其他类型的数据转换为字符串。

几乎所有能够用文字描述的数据都可以转换为字符串。

转换格式:

变量或值.toString();

示例:

true.ToString()

intNum.ToString()

 

XXX.Parse(字符串)

将字符串转换为其他类型。XXX代表类型名称,比如doubleintbool

格式:

XXX.Parse(字符串)

示例:

string strNum = "123";

short sNum = short.Parse(strNum);

int iNum = int.Parse((123).ToString());

float fNum = float.Parse(strNum);

double ddNum = double.Parse(strNum);

decimal dcNum = decimal.Parse(strNum);

long lNum = long.Parse(strNum);

 

XXX.TryParse(字符串)

将字符串转换为其他类型的数体,在转换的过程中需要一个已赋值的临时变量,如果转换成功则临时变量中存放的就是转换之后的值,否则临时变量中保持原值不变。XXX代表类型名称,比如doubleintbool

格式:

XXX.TryParse(字符串,out 临时变量)

示例:

string strNum = "123";

decimal bTemp = 0;

decimal.TryParse(strNum, out bTemp);

Console.WriteLine(bTemp);

 

 

System.Convert类型转换工具

它为数据类型转换提供了一多种方法,可以将一个基本数据类型转换为另一种基本数据类型。

 

Convert的类型转换方法有包含:

ToBooleanToByteToCharToDateTimeToDecimalToDoubleToInt16ToUint32ToUint64等等。

示例:

char c = 'B';

int intNum = Convert.ToInt32(c);

Console.WriteLine(intNum);

char a = Convert.ToChar(intNum);

Console.WriteLine(a);

string strNum = intNum + "5";

short sNum = Convert.ToInt16(strNum);

Console.WriteLine(sNum);

float fNum = Convert.ToSingle(sNum);

Console.WriteLine(fNum);

 

 

as类型转换

通常as 用于引用类型之间的转换,示例:

object obj = "今天星期五";

string sTime = obj as string;

Console.WriteLine(sTime);

 

is关键字:判断变量或数值的类型

示例:

int sTime = 12345;

if (sTime is int)

Console.WriteLine("这是int");

else 

Console.WriteLine("不知道是什么");

 

 

练习:

1、 定义一个float类型的变量,并存入值123.31。(注意float类型数值的表示方法)

2、 定义一个char类型的变量cc,并存入字符c,将cc进行没类型转换并存入int类型变量i中,将i转换为字符串,并与字符串”51”连接并将结果存入string类型变量ss中,将ss转换为double类型并显示。

3、 将字符串”3.14”char类型数值”7”都转换为double类型并相加。

4、 将字符串”15784456” convert转换为ushort类型,并在控制台中显示出其类型。

5、 从字符串”35624”,取出第三个数字,并显示出来。

 

 

运算符与表达式

C#中的变量

变量的命名规则:

1)、由字母、数字或下划线"_"组成。(中文也可以被看作是字母)

         2)、必须由字母或下划线"_"开头,不能以数字开头

        3)、不能是c#中的关键字 如:int、string、bool、Main、class等

        4)、区分大小写  如:小写的a    大写的A 是两个变量

 

命名技巧:

1、驼峰命名法:当一个变量或函数、方法、类名由多个单词构成时,将每个单词的首字母大写,这我们就可以快速的区分单词之间的间隔。

 

2、在变量名的前面,我们可以用3个字母来表示变量的类型,比如:intflt(float)str(string)dcm(decimal)dat(dateTime)

 

3、接口一般以大写字母I 开头,bool类型一般以is开头。

 

位运算符

将十进制数字转换为二进制之后,再通过与、或、非等逻辑运算,对每个位上的二进制数字进行比较。

按位与&

示例:

int i = 11 & 7;

相当于:

1011

  & 0111

------------

0011

其结果为二进制的11,也就是十进制3

按位或|

示例:

int i = 11 | 7;

相当于:

1011

  I 0111

------------

1111

其结果为二进制的1111,也就是十进制15

位相等^

示例:

int i = 11 ^ 7;

相当于:

1011

  ^ 0111

------------

1100

其结果为二进制的1100,也就是十进制12

 

按位取反~

只操作一个数字,将该数字中为1的位变成0,为0的位变成 1

 

移位运算符

就是对二进制数,进行乘以10或除以10的操作。相当于给数字乘以十进制的2

int i = 11 <<1;

结果为22

 

三元运算符

由一个逻辑表达式来控制,逻辑表达式为true时返回第一个值,为false时返回第二个值。

格式:   逻辑表达式 ? 第一个值 : 第二个值 ;

示例:

string strResult = (11 <1)?"成立":"不成立";

 

 

运算符的优先级

1、括号:()、[]

2、一元运算符:!、+(正)、-(负)、++、--

3、乘除:*、/、%

4、加减:+(加)、-(减)

5、位移运算符:<<、>>

6、关系运算符:<><=>===、!=

7、位运算符:&  |  ^

8、逻辑运算符:&&|| (先运算逻辑与,再运算逻辑或)

9、三元运算符:?:

10、赋值运算:=、+=、-=、*=、/=、%=  (&=、|=、^=、~=) 

 

关于除法的说明

运算结果的类型和参与运算的类型中最高的类型一致,影响最大的是除法,整数除以整数结果还是整数,例如10/3的结果是3,而不是3.333 。所以必须要先将两个数字转换为浮点或decimal类型,再相除。

 

表达式的概念

就是用运算符或者方法将变量连接起来进行运算,终得到一个确定的结果的运算式。

 

条件判断语句

if

switch单值判断

示例:

string strInput=Console.ReadLine();

switch (strInput)

{

case "a":

Console.WriteLine("a级");

break;

case "b":

Console.WriteLine("b级");

break;

default: //当上面所有的条件都不满足时执行这里

Console.WriteLine("XXXXXX");

break;

 

注意事项:

1

控制表达式的数据类型可以是sbyte、byte、short、uint、long、 

ulong、char、string或枚举类型(后两种类型我们随后会讲到) 

2

每个case标签中的常量表达式必须属于或能隐式转换为控制表达式的类型 

3

如果有两个或者两个以上case标签中的常量表达式值相同,编译时将会报错 

4

switch语句中最多只能有一个default标签 

5

要求每个标签项后使用break语句或跳转语句goto(稍后将会讲到)

 

练习:

一、 请编写一个程序实现:输入一个长方形的长和宽,输出其长方形的面积

二、 输入一个华氏温度,要求输出摄氏温度;公式为:C=5/9(F-32)C表示摄氏温度,F表示华氏温度

三、 编写程序求圆的周长和面积,要求根据输入的圆的半径计算出圆的周长和面积(c:周长,s:面积,r:半径,π=3.14)

公式:c=2πr;  s=πr2

四、 编写程序求长方体的体积和表面积,要求根据输入的长方体长、宽、高计算出长方体的体积和表面积(L:长,W:宽,H:高,V:体积,S:表面积)

公式:v=l*w*h;   s=2(l*w+w*h+h*l);

五、 判断输入的年份是否为闰年,只需要满足下面条件之一即为闰年

a) 能被4整除,且不能被100整除

b) 能被400整除

 

1.编写小程序实现任意输入两个数,判断其大小并输出较大数!

2.编写小程序实现任意输入两个两位以上的整数,找出最后一位并且判断大小,输出判断结果!

3.编写小程序实现任意输入两个整数,第一个数要求是两位以上的整数,找出第一个数末尾那位数,用它除以第二个数,输出运算结果!

4.输出3的前面一个数字和后面一个数字!实际上就是将char类型的字符3转换为int类型,加一或减一之后再转回char类型。

5.编写小程序实现任意输入两个数,判断其大小;将大的一个数和10取模,将取摸的结果输出!

6.编写小程序实现任意输入两个数,判断其是否相等,如果相等,就输出“相等”,否则输出“不相等”!

7.编写小程序实现输入一个五位数,分别取出个位上的数、十位上的数、百位上的数、千位上的数、万位上的数,分别输出这五个数!

8.(思考题)任意输入一个三位整数,并且分别取出个位上的数,十位上的数,百位上的数;如果这三个数都不等于4并且取出的三位数之和等于8,则输出“恭喜你,中了八毛钱!”,如果不等8,则找出这三个数种最大的一个数,输出那个最大数和“下次继续努力吧!”这句活!

 

1.编写小程序实现任意输入两个数,求两个数的加、减、乘、除,并且分别输出结果。

2.编写小程序实现任意输入一个整数,输出该数字的最后一位。

3.编写小程序实现任意输入五个人的年龄,并求出平均年龄,并且输出。

4.编写小程序实现一种商品(数量,单价任意输入),输出总价.

5.在第四题的基础上实现三种商品的总价计算,输出应付多少钱。

 

1、使用三元操作符求三数的最大值。

2、使用三元操作符求三数的最小值。

3、输入一个四位数,分别求出个位,十位,百位,千位。

 

 

 

一、 输入一个五位以内的数字,输出该数字是几位数

二、 输入三条边,判断给定的三条边是否能组成三角形,如果能,再判断是等边三角形、等腰三角形还是普通三角形 

三、 输入5个数字,判断这5个数字是否存在重复的数字,如果存在则输出yes,否则输出no  

四、 编写一个小程序判断输入的正整数是否既是5又是7的整倍数.若是,则输出yes,否则输出no。 

五、 编写一个小程序,有一函数如下 

 

输入X 的值,输出对应Y 的值.

六、(思考题)编写一个小程序实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 

  1. 能同时被3,5,7整除; 
  2. 能被其中两个数整除(要指出那两个数);
  3. 能被其中一个数整除(指出那一个); 
  4. 不能被3,5,7任一个整除。

 

 

1、输入一个时间(整数),时间在6~10点之间输出“上午好”,在11~13点之间输出  “中午好”,在14~18之间输出“下午好”,其他情况输出“休息时间”。

2、使用IF语句,判断四数的最大值 。

3、从键盘输入两个数,然后输入一个运算符号,使用if语句和switch语句判断输入的运算符号是"+-*/%"中的哪一个,然后对输入的两个数进行相应的计算。

4、判断任意年份是不是闰年。(条件:能被4整除却不能被100整除或者能被400整除的年份是闰年)

 

 

第一题:

有一个函数:

y = x         (x<1)

y = 2x-1       (1<=x<10)

y = 3x-1       (x>=10)

写一程序,输入x,输出y值。

 

第二题:

3个整数abc,由键盘输入,输出其中最小的数。

要求:用if语句编写程序。

 

第三题:

企业发放的奖金根据利润提成。利润I小于或等于10万元的,奖金可提成10%;利润高于10万元,低于20万元(100000<I<=200000)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%200000<I<=400000时,低于20万的部分仍按上述办法提成(下同),高于20万元的部分按5%提成;400000<I<=600000时,高于40万的部分按3%提成;600000<I<=1000000时,高于60万的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

要求:用ifswitch语句编写程序

 

第四题:

实现一个简单的四则运算计算器。

要求:参与运算的两个数值和运算的类型均从控制台输入,顺序为:第一个操作数、第二个操作数、运算类型;用switch语句编写程序。

 

 

循环与数组

关于VS的一些操作说明

运行

F5 调试 à 启动调用

Ctrl + F5: 调试 à 开始执行(不调试)

调试

断点

我们启动调试的时候,程序的执行过程就会处于VS的控制和监督之下的,此时我们就可以用多种方式来观察的程序的运行状态。

 

所谓断点,就是让程序在执行到某行代码的时候暂停,让我们可以看到程序的状态。

F11逐语句执行

让程序一条一条的执行。

监视

在程序进入调试状态之后,会显示局部变量和监视窗口,在这些窗口中我们可以跟踪程序中出现的变量和对象的变化。

比如在监视窗口中,我们可以指定众多变量中需要监视的那个变量,并且可以对这个变量进行运算,或调用其属性与方法。

 

熟练的使用调试工具,能够极大的提高我们在编程时解决Bug的能力。

 

VS中的项目的管理

一个项目的构成

查看一个项目所包含的所有文件:

通过右击项目名称 à windows资源管理器中打开文件夹 à 就可以看到这个项目的文件了

 

其中:

文件:解决方案名称.sln 解决方案名称.suo 就是我们的解决方案文件,我们可以把它理解为是项目中所有项目和文件的一个目录清单。通过双击打开这个文件,我们就可以在VS中打开整个解决方案及软件项目。

 

解决方案中可以包含多个软件项目。每多包含一个项目,sln文件所在文件夹中就会多一个子目录

 

文件:项目名称.csproj c sharp project)就是有指C#所编写的软件项目。

 

扩展名为cs的文件,就是我们所编写的c#类文件。

 

目录bin:用户存放用户编写的代码运行之后,编译的结果,也就是exe可执行文件与dll动态链接库就放在此处。

对于控制台应用程序和winform桌面应用程序来说,这个文件夹复制到其他地方里面的exe文件也是可以直接运行的。

 

目录obj:用于存放引用的类库文件,不需要用户手动去维护它。

目录properties :用于存放当前程序集的配置参数和信息。

 

在一个解决方案中创建多个项目

打开当前项目 à  vs的“文件”菜单 à 添加 à 新建项目

 

启动项

在一个解决方案中允许包含多个项目。但一次只能执行一个项目。因此如果我们需要在解决方案中指定默认运行某一个项目的话,需要将这个项目设为启动项:

在项目名称右键菜单à设为启动项

 

运行非“启动项”的项目

在项目名称右键菜单 à 调试 à 启动新实例

在项目名称右键菜单 à 调试 à 进入并单步执行新实例(一开始就让程序一条一条的逐语句执行)

 

行号

显示行号:工具菜单 à 选项 à 文本编辑器 à 所有语句 à 打上“行号”前的对勾

 

选择一行代码:单击行号。

选择多行代码:在行号上拖动鼠标。

 

变量的重命名

 

Ctrl + r + r

改变指定变量位于多处的变量名

 

关于数据类型的补充说明

关于实数的运算

decimal deNum = 1.0m / 7.0m;

double dbNum = 1.0 / 7.0;

float fltNum = 1.0f / 7.0f;

Console.WriteLine(deNum);

Console.WriteLine(dbNum);

Console.WriteLine(fltNum);

此例中可以看出三种精度的实数运算中的差异。

注意:整形除以整形还是整数,即使你将结果放入小数类型中。

 

 

变量的作用域

在方法、if判断、for循环等范围内定义的变量,只能在其所定义的大括号{}内部起作用,超出范围之后就无法再调用了。

 

我甚至可以用 { } 制造一个单纯的作用域。

{

int num = 5;

}

 

 

循环

While循环

do while循环

至少会被执行一次

do

{

Console.WriteLine("这是一个循环");

string ss = Console.ReadLine();

if (ss == "stop")

i = 2;

} while (i == 1);

 

for循环

int ii = 0;

for (int i = 1; i <= 100; i++)

{

ii += i;

}

Console.WriteLine(ii);

 

for循环的简略写法

简略写法下for循环可以直接被当成while来使用

int i = 0;

for (; i < 10; )

{

i++;

Console.WriteLine(i);

}

 

这个for循环中我们省略了“循环变量的定义”与“步长计算的部分”。

同时使用多个循环变量

for (int i =0, j=3 ; i < 10 || j<30 ; i++,j+=3 )

{

Console.WriteLine("当前i的值是{0}  j的值是{1}",i,j);

}

 

其中,ij