黑马程序员 C#面向过程基础知识点

----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a><ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

C#基础知识

1.要在计算机中存一个数字100

Int a   //开一个能放数字的空间

a=100    //100放进去

语法格式:

       数据类型 (空格)变量名

赋值     变量名=

 

数据类型:

Int  整数,  -21474836482147483648   //范围

Double  小数

Char  字符型   只能存一个字符

String  字符串

Decimal    财务(钱),小数后带m

注意:

声明多个变量的时候用“,”隔开,变量一定要先声明,再赋值才能使用,显示变量的时候不用加“”

 

赋值运算符和赋值表达式

赋值运算符“=”,表示把“=”号右边的值赋给左边的变量。

变量可以重复赋值,一旦给一个变量赋了新值,那么变量中的老值就不存在了。

+1.连接两个字符

        2.数学上的加法运算

“{0}”在字符串中变量可由占位符代替。

   例:变换两个变量的值(ab

      交换两个变量,借助第三方temp,把a赋给temp,把b赋给a,再把temp中的值赋给b,(ab)的值就进行了交换。

 

转义符

\加一个字母组成有意义的字符

 

\n    表示换行

\b    backspace  退格

\t     tab  制表

       字符串前加@,注字符串中的(\+字母)不再有转义符

 

算数运算符及算数表达式

+-*/%(取余数)

++  自加一   (前加表示运算时先加,是新值。)

                   (后加表示运算完成后计算,是原值)

-      -   自减一

+= (表示加完之后等于)

-=*=/=%=

关系运算符:

>.<     ==.!=   >=.<=         (关系运算符用于比较两个事物之间的关系)

 

自动转换的条件

1.   两种数据类型兼容

2.   两种数据、一种范围、一种小,并且小转向大的一方,不丢失精度。

 

数据类型的转换

int 变量=convert.ToInt32(待转的字符串);

把待转的字符串转换成int类型后赋给变量。

还有convert.string

C#中的异常捕获

try

       有可能出现错误的代码写在这里

catch

      出错后的处理

上面的程序如何执行:

        如果try中的代码没有出错,则程序正常运行完try中的内容后,不会执行catch中的内容。

        一旦try中的代出错,程序立即跳入catch中去执行代码,那try中的代码不再执行。

 

Bool类型

布尔(bool)类型

bool的值只有两个

ture

false

关系运算的结果为bool类型。

如果关于运算表达式成立,则这个表达式的值为ture,否则为false

逻辑运算符

&&  || 

   语法:表达式 1 && 表达式2

     逻辑与连接的两个表达式,能够得出bool类型,一般情况下都是关系表达式。

&&的逻辑结果

&&表达式1

表达式2

逻辑结果

Ture

Ture

Ture

Ture

False

False

False

Ture

False

False

False

False

 

||的逻辑结果

表达式1

表达式2

逻辑结果

Ture

Ture

Ture

Ture

False

Ture

False

Ture

Ture

False

False

False

 

&&  表示 

||   表示  

   表示  

逻辑非:!     这是一个一元运算符

用法:!(bool类型的表达式)

   作用:取反,如果布尔类型的表达式为ture,加!号之后,其整个表达式的结果为false

注意:与或的短路,与在逻辑语运算中,由于要求两边的表达式结果都为ture,当第一个为false的时候,后边的一句话不用进行运算。

 

If结构

   基本语法:

If  (条件)

     语句1


执行过程:首先判断条件的结果,如果条件为ture,则执行语句1,如果条件为false,则跳过语句1,执行后面的语句。

注意:1.if后面括号中的条件,要能计算成bool类型的值。

3.   默认情况下,if语句只能带一句话,即和if有关系的语句。

 

If-else

语法:if(条件)

{语句1;}

else

{语句2;}

执行过程:如果条件为ture,则执行if带的语句块1,并且跳过else带的语句块2。如果条件为false,则跳进if带的语句块1,执行else的语句块2.

上面两个语句块,根据条件结束为turefalse总要执行一个。

 

Switch-case 语句

语法:

Switch (表达式)

       Case  1;语句块1

       Break

       Case  2;语句块2

       Break

       Default;语句块3

       Break

执行过程:首先计算表达式,然后根据计算结果与匹配case后面的值,如果有匹配项,则执行匹配项后面的语句,直到break语句跳出switch-case如果所有的case值都不匹配,那么有default则执行后面的语句,知道break结束,如果没有default则跳出switch-case,什么都不执行。

If-elseswitch

相同点:都可以实现多分支结构。

不同点:switch  一般只能用于等值比较,if-else if    可以处理范围。

 

循环结构

 

While 循环的语法:

While (循环条件)

     循环体;(要循环执行的N条语句)

执行过程:1.判断循环条件,如果条件为ture,则转向2;如果条件为false则转向3

                 2.执行循环条件,循环体执行完后,转向1

                 3.跳出循环,循环结束。

注意:再循环中一定要有那么一句话,改变循环条件中的某个变量的值,使循环条件终有那么一天为false

特点:先判断,再执行。

Do-while

先执行,再判断

语法:

Do

       循环体;

while(循环条件);

执行过程:1.首先执行循环体,执行完转2

                 2.判断条件是否成立,如果条件为ture则转向1,如果条件为false则转向3.

                 3.跳出循环,循环结束。

假如循环条件一开始就不成立,对于while循环,一次都不会执行,对于do-while循环体会执行一次,所以do-while的循环体一般至少会被执行一次。

While     先判断,再执行

Do-while 先执行,再判断

For 循环

语法:

For (表达式1,表达式2,表达式3

     循环体;

执行过程:①计算表达式1,转向第二步。

                 ②计算表达式2(循环条件),如果表达式2的值为ture转向第三步。如果表达式2false转向第五步。

                 ③执行循环体,转向第四步

                 ④执行表达式3,转向第二步

                 ⑤循环结束。

一般情况下,表达式1用于定义循环变量和对循环变量赋初值。

                    表达式2循环条件

                    表达式3用于改变循环变量的值

 

Break

       Break 用于循环中,退出当前循环。

   在循环过程中,遇到break,立即跳出当前循环。注意,用于循环中时,跳出的是break所在的循环

 

Continue

立即结束本次循环,判断循环条件,如果成立则进入下一次循环,否则退出循环。不再执行循环体中,continue下面的语句。

do-while/while   直接进行下一次循环条件的判断,如果条件成立,则再次进入循环,对于for循环,先执行表达式3,再判断循环条件是否成立)

 

常量

语法:const  类型   常量名=常量值

  在定义时赋值,在其他地方不允许赋值

 

枚举

让我们定义一种枚举类型并且在定义这种类型的时我们要指定这个类型的所有值。

语法:enum   (自己起的类型名称){值1,值2,值3,。。。值n};

枚举的定义,一般和类定义在同一个级别,这样在同一个命名空间下的所有的类就都可以使用这个枚举了(方法中/类中都可以)

枚举的作用:

1.   限制用户不能随意赋值,只能在定义枚举的列举中选择。

2.   不需要四级每一个值是什么,只需要选择相应的值。

           注意:定义枚举时,值不能是int类型,枚举类型的变量都可以强制转换成int类型。

        如果把一个字符串转换成枚举类型:

         (枚举名称)(enum.parsetypeof(枚举名称),“待转字符串”));

 

结构

语法:

Public  struct  结构名

    定义结构成员

定义完结构后,就可以直接声明相应的变量,声明好变量后,通过变量名.成员名,来访问结构的成员。

Public struct  name    //定义一个叫做name的结构

        Public string  name    //结构成员

        Public gender sex

        Public int age

方法中

  Nameonename           //访问name结构的成员

Onename.name=“张三”‘

Onename.sex=“”;

Onename.age=“”;

Name twoname

Twoname.name=“”;

 

 

数组

  可以帮我们一次声明多个同类型的变量,这些变量在内存中是连续储存的。

语法:

数据类型[]  数组名=new  数据类型[数组长度]

例:int[]  score=new int[5]

声明一个长度为5的数组,数组叫score

访问数组:通过下标(索引)来访问数组   数组名[编号]

  赋值  score[0]=3

Int  类型数组一旦声明里面的每一个元素被初始为0,通过  数组名.length    可以获得数组的长度。

 

冒泡排序

  让数组中的元素两两比较(第i个与第i+1个比较)经过ni+1)遍两两比较,数组中的元素能按照我们预期的规律排序。

要从大到小排序,我们进行两两比较的时候用“<”

   1.2.3.4.5.6.7    //原始元素,7个元素

     2.3.4.5.6.7.1     //1趟比较   比较了6

     3.4.5.6.7.1.2      //    2                        5 

     4.5.6.7.1.2.3      //    3                        4

         、、、                       、、、         

也就是n个数需要排n-1趟,第7趟比较的次数为:n-t

Forint i=0i<numbers.length-1i++

Forint j=0j<numbers.length-1-I;j++

                {

                       If(“>”或者”<”)

                            

                                   交换

}

 

方法

功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,那一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了。

语法:

[访问修饰符][static]返回值类型  方法名()

     方法体;

注意:1.一般情况下,方法一般要定义在类中。

2.如果方法没有返回值,则返回值类型写void

            3.如果方法没有参数,()不能省略

如果是静态方法(由static修饰的)则使用  类名.方法名();

在类中调用本类的方法,可以只写    方法名();

Return;立即跳出本方法。

 

变量的作用域

在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。

 当被调用者想得到调用者方法中的变量时则可以让调用者这参数的形给调用者。

在方法名后面的括号内定义变量,叫做定义这个方法的参数。

这里定义的变量用于接受调用者传过来的数据。

注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致。

Public staticvoid test int number     //形参

{}

当调用者想访问我们方法中的变量时,可以通过返回值返回

         String s=console.Readline();

         Int i=convert.ToInt32(“22”);

参数:

当形参是数组的时候,我们传数组名。

一个变量一旦定义在方法外,类的里面,就叫做类的字段,这个变量就可以被本类的所有方法所访问,但是要注意,静态方法只能访问静态字段。

const 修饰的常量不能定义静态的。

返回值

   为什么方法前面能够定义一个变量收到方法的值,是因为在方法中使用了返回值。

    只要在方法中返回了值,那么在调用方法中前面就应该用一个变量来接受方法的返回值。

注意:一个方法只能有一个返回值,一旦一个方法有返回值,那么在这个方法值中,就必须通过return语句返回一个值,并且这个值要与返回值类型是相同的。

语法:    return 值;

方法重载

    一般在同一个类中,方法名相同,并且方法的参数不同,或者对应位置上的类型不同,才能够成方法重载。

注意:方法重载和返回值没有关系。

参数返回值outref

   通过参数返值实现步骤

1.     在方法的参数类型前加out,那么传参数的时候,也必须在number前加out表明这个参数不是传入,而是用来传出值的。

2.     如果参数是以out形式传入的,那么在传入前可以不赋初值。

3.     在方法中对于由out修饰的参数,必须赋值并且必须在使用前赋值。

Out用于传出值,大方法中必须对out修饰的传数进行赋值。

Ref可以理解为双向的,既可以传入,又可以传出。

    在传参的过程中,如果参数有outref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应改变。

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a><ahref="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流!----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大文件拷贝实例源码,学习关于IO文件流、多线程相关使用做参考。 private void button4_Click(object sender, EventArgs e) { this.progressBar1.Value = 0; this.label1.Text = "0%"; if (!File.Exists(this.textBox1.Text)) { MessageBox.Show("找不到目标文件!"); return; } if (!Directory.Exists(this.textBox2.Text)) { MessageBox.Show("请选择有效的保存路径!"); return; } string fileRead = this.textBox1.Text; string fileSave = Path.Combine(this.textBox2.Text, _fileName); System.Threading.ThreadPool.QueueUserWorkItem((o) => { using (IDisposable file = new FileStream(fileRead, FileMode.Open, FileAccess.Read), fileWrite = new FileStream(fileSave, FileMode.Create, FileAccess.Write)) { int count = 0; long fileLength =((FileStream)file).Length; //目标文件大小 //根据目标文件大小创建byte数组长度 byte[] data = new byte[fileLength > 1024 * 1024 * 30 ? 1024 * 1024 * 30 : fileLength]; //30M 1024 * 1024 * 30 int step = (int)Math.Ceiling(fileLength * 1.0 / data.Length); //分流段数 double n = (100 * 1.0 / step); //每次进度条累加 double m = 0; //累加统计 int spam = 1; //时间间隔 double speed = 0; //拷贝速度 do { DateTime time = DateTime.Now; //文件流操作 count = ((FileStream)file).Read(data, 0, data.Length); ((FileStream)fileWrite).Write(data, 0, count); //保存时间间隔,单位毫秒 spam = (DateTime.Now - time).Milliseconds > 0 ? (DateTime.Now - time).Milliseconds : spam;//必须大于0 //计算速度 单位k/s

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值