黑马程序员-------C#语言面向过程基础

时间:2021-09-03 00:26:31

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>

<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

一、Dot net开发工具:Visual Studio

二、Dot net 平台特征:跨语言(C#VB.NetF#IronPython

三、.NET Framework框架:为不同的基于.NET的语言提供相同的类库、函数库。

四、.NET Frameword框架优点:跨语言、跨平台、使用安全。

五、.Net版本:visual studio 2003.Net1.1)、visual studio 2005.Net2.0)、visual studio 2008.Net3.X)、visual studio 2010.Net4.X

分为:Express(免费版)、Standard(标准版)、Professional(专业版)、Team Suite(团队版)

六、C#语言与.Net Framework

.Net Frameword 是一个框架,基本上包括CLRcommon lauguage runtime)公共语言运行时,BCLbasic class library)基本类库。而C#是运行在.Net Frameword上的一种基本语言。

七、C#语法特点:

(1)从上到下一条条语句的一次执行。

(2)大小写敏感(区分大小写)。

(3)每写完一条语句用“;”与下一个语句隔开。

(4)C#语言用到的一些符号像引号” ”,逗号分号等等都要是英文半角状态下的。

八、C#语言基本结构:C#文件是.cs结尾的文件。

using System;                                      //引用命名空间

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1                       //本程序所在的命名空间

{

    class Program                                  //

    {                                            //不管是Windows程序

        static void Main(string[] args)                 //还是Web应用程序

        {                                        //还是控制台程序等等

            Console.WriteLine("HELLO WORLD!!");  //都要有一个Main()函数

            Console.ReadKey();                    //且只能有一个,它是程序的入口点

        }

    }

}

一开始学习C#语言是从控制台程序开始的,最先接触的是三句话:

1、Console.WriteLine(“要输出的内容”)

2、String  s =Console.ReadKey();将控制权交给用户,通常定义一个String(字符串类型)变量来接收它的值

3、Console.ReadKey();让程序停下来,可以看到执行结果。

九、C#语言基本语法:

(1)注释:

1)单行注释:   //要注释的内容

2)多行注释:   /*多行注释

                 的内容*/

 

(2)占位符的使用:占位符从零开始,是第二个参数开始的顺序,注意定义几个{},后面就要有相对应参数的个数。

例如:Console.WriteLine(“{0}+{1}={2}”,第一个参数(填补{0}),第二个参数(填补{1},第三个参数(填补{2})));

示例:Console.WriteLine("{0}+{1}={2}",10,20,30); //102030也可以是任意类型的变量。

(3)变量

变量的概念:变量就是盛放数据的容器。

变量的声明:变量类型 变量名

变量声明示例:int num=10;  //定义了一个int类型的变量,名字是num ,用=号赋值为10

变量的定义规则:在程序中不能出现重复定义string s=””,string s=””;也就是一个变量名不能重复定义,也不能两种类型同用一种名称,例如:string s=””,int s=10 ,这也是错误的。

变量的使用规则:先定义,再赋值,后使用

变量名与字符串的值得混淆:

Int  i=10;

Console.WriteLine(i);  //结果是10,因为int 类型的变量i指向的是10

Console.WriteLine(“i”);//结果是i,因为这是一个字符串。

变量的命名规则:第一个字符是字符或者下划线,后可以是任意字母,数字,下划线,不要使用C#中的关键字。(可以使用中文,但是很少用中文)

变量的作用域:在{内定义的变量,只能在}之内可以使用。

(4)基本的数据类型:

1)String字符串类型,它的值要放在双引号中(可以看做多个单个字符组成)。

2)Int 数字类型,不用引号。

3)Char 单个字符,用单引号

4)Bool只有true false

5)Decimal:货币

6)Byte;字节

7)Double :双精度

8)Long;长整型

9)Float:单精度

(5)转义符

“abc” 这是一个字符串,如果要让控制台输出引号,二不当做字符串来处理这时要用到的就是转义符

用法是:\要转义的字符

例如:\” 代表这是一个引号

其他转移字符:

\’ 单引号  ; \””双引号 ;\\斜线 ;\b退格 ;\n换行 ;\r回车 ;\t制表符 

不转义:在字符串前加

(6)数据类型的转换

显示转换:源类型可以转为目标类型的转换,但有可能出错的转换,需要程序员进行强制转换。

例如:

int i=10;

double d=20;

int c=i+(int) d         //需要显示把double d转换成(int)

Console.WriteLine(c);

隐式转换:源类型一定可以转为目标类型的转换,系统可以自动转换

例如:

int i =10 ; 

double d=20;

double c =i+d;          //系统自动将iint类型转成了double

Console.WriteLine(c);

但是上面的两个例子值适合在数字类型之间转换,如果想要在字符串,数字,字符之间转换,

则可以调用Convert.ToInt32(); //转换成为数字类型

 转换失败不会报错返回bool值  Int.TryParse(); 还有double.TryParse() , char.TryParse()等等

 转换失败就会报错返回转换后Int值 Int.Parse();还有double.Parse(),char.Parse()等等

一般数据类型都可以转换为字符串类型       

(7)运算符

+:如果是数字类型则执行数字的值相加操作,如果是两个字符串则是连接两个字符串。

-:两个数字类型的值相减

*:两个数字的值相乘

/:连个数字的值相除

%:两个数字相除后取余数(取模)

=:赋值运算符 把“=”右边的值或者表达式的值赋给左边的变量

+=:例如:i +=3; 等价于i=i+3;

-=i-=3等价于i=i-3;

*=i*=3等价于i=i*3;

/=i/=3等价于i=i/3;

++:自增运算,每次自动增1,例如i=1;i++;       i的值为2

--:自减运算,每次自动减1,例如i=2;i--;         i的值为1

==bool类型的运算,有两种结果true 和 false  判断左侧表达式的值是否等于右边

=:判断左侧表达式的值是否不等于右边 (!是取反)

<:小于号 判断左侧值是否小于右侧值

>:大于号 判断左侧值是否大于右侧值

<=:小于等于  判断左侧值是否小于等于右侧值

>=:大于等于  判断左侧值是否大于等于右侧值

&&:并且运算   表达式1 && 表达式2   结果是bool类型,只有两边表达式都为true,结果才是true,有一个为false,结果就是false. 

||:或者运算  表达式1||表达式2  ,结果是bool 类型,有一个为true,结果就为true ,

两边表达式都为false是,结果才是false.

(8)结构控制语句

选择控制语句

容易出现的错误:

1if(表达式){语句块} //()后不能加“;”,否则,它将代表if结束,不执行{}中的语句。

2、如果{}内只有一条语句,可以省略{},但有多条语句不能省略,否则,值执行一条语句。  

1if  ...else ...

If(表达式)   {语句块 1 }      如果if 表达式的值为true 就执行语句块1

Else        {语句块 2}       如果if 表达式的值为false就执行语句块2

2)if ... Else if ... Else if ... Else ...

If (表达式) {语句块}                 依次执行if ,else if 内的表达式,一旦有满足的条件

Else if (表达式) {语句块}         就执行{}内的语句,执行后立刻跳出不在往下做

Else if  (表达式) {语句块}           判断。如果都不满足,有else则执行else 内语句

.....                                没有else 就退出不执行了

Else {语句块}

3)If (表达式){语句块可以单独使用if 如果表达式满足条件则执行,否则不执行

4)If ....或者if ... Else ... 可以嵌套使用if 或者else 

例如:if (表达式)

      {

            ...................

          If (表达式)

          {

            ...................

          }

          Else

        {

           If (......)

           {

            }

        }

      }

5)Switch (匹配值)   {case  语句 ;break;.......}

Switch 语句也是选择匹配的项来执行,只是,匹配的是单个确定的值,不是变量或者表达式。

示例:

Int i =10;

Switch (i)

{

Case 10:Console.WriteLine(“您输入了10”);break;

Case 20:Console.WriteLine(“您输入了20”);break;

Default :Console.WriteLine(“都不是”);break;

}

注意:如果上面的例子case写成:

Case 10:

Case 20:

Case 30:Console.WriteLine(“你输入了1020或者30”);

则是不管匹配的是1020还是30都执行Case 30:后面的语句。

循环语句

1)While (条件)  {要循环执行的语句}//先判断条件,只要while后括号内的表达式为true 就循环执行{}内的语句

2)Do {语句} while (条件)//先执行{}内语句,在判断while()括号内的条件,不管条件满不满足都执行一次{}内语句。

3)For (变量初始值;判断条件;执行后条件) //判断条件是bool 类型的值

示例:for (int i=0;i<100;i++)

      {

          循环语句;...........

      }

4)foreach (变量类型 临时变量 in  数组名称)

{

 ...............

 }

比较以上三种循环控制结构:

(1)do {} while()先执行一次,在判断是否满足条件继续执行(至少执行一次{}内语句)

(2)While(){} 先判断条件是否满足,如果不满足条件,则不执行

(3)For 一般在知道循环次数的条件下使用,并且可以有选择的执行数组元素。 

(4)Foreach 一般用于遍历数组的每一个元素,是只读的。

5)循环中断

关键字: return  continue break;

Break; 立即中止循环,并且跳出整个循环,继续往下执行。

Continue:立即中止本次循环,并且执行下一次的循环

Return:(在控制台程序中)立即退出整个Main()函数。

顺序结构:

一般在没有选择控制语句,与循环语句的情况下,程序是从上到下依次执行的

(9)枚举类型

为了限定变量的取值范围,保证数据的有效性,而定义的枚举类型。

其特点是其值是确定的几个取值范围。例如性别,男或女

枚举是一个类型,和类类型一样,定义在命名空间内。

声明枚举语法:

Enum  枚举名

{

   值1

   值2

   ....................

}

其中,它的每个值都是有int类型的,默认是从0开始,也可以给它赋值:

例如:

Enum fruit 

{

Apple =1,   //这样就从1开始

Orange=2,

Strawberry=3,

.............

}

(10)函数

函数:实现代码复用,有时,在程序中,需要反复用到一段代码,因此,可以写成一个函数。

函数可以理解成完成特定功能的代码段,需要反复执行这段代码而写成的一个函数。

语法 [访问修饰符] [static]  返回值类型 方法名  ([参数列表]

代码段

例如:

public static void Method(string name,int age) //连个参数,无返回值

{

  Console.WriteLine("大家好,我叫{0},今年{1}岁了",name,age);

}

函数可以构成重载:

重载就是函数的重名,当调用这个函数时,系统会根据参数类型和个数来自动调用匹配的函数。

构成函数重载的条件:

函数名称相同

函数的签名必须不同(函数签名就是函数的参数列表,参数类型不相同,或者个数不相同)

返回值类型可以不相同

例如:下面的两个函数就构成了重载,因为他们的参数类型不相同。

Public static int Add(int a,int b)    //两个int类型的参数,返回值是int类型

{

Return  a+b;

}

Public static double Add(double a,double b) //两个double 类型的参数,返回值是double 类型

{

Return  a+b;

}

十、字符串的常用函数

1)字符串的特性:

字符串是不可改变的,一个字符串就是一个字符数组,它可以利用索引来访问每一个指定的字符,但是不能改变它。

如果想要改变某个字符,就要通过调用ToCharArray()方法,转换成char 类型的数组,然后再修改某个字符。

例如:

String s=”world”;

S[3]=’a’;  //这个是错误的,因为字符串的每个字符是只读的,只能访问,不能修改,字符串一旦声明就不能够改变了。

String s=”world”;

Char  []   s2=s.ToCharArray();  //这样就可以修改了,转成char类型的数组后,在对数

S2[3]=’a’;                     //组进行某个元素的更改。然后在转换成新的字符串。

String s2=new string(s2);         //这个新的字符串就是修改了某个元素之后的值。

下面的字符串:

String s1=”me”;  //字符串s1的值是 “me”

S1=”you”;      //这时s1的值是”you”,但是字符串并没有改变,”me”这个字符串还是在内存

               //中,只是,s1指向了另一个字符串。

String s1=”sa”; //执行这句话的时候,系统在线程栈中声明了s1,并且在堆中给”sa”这个字符串分配了内存空间,把指向”sa”的地址复制了一份给了s1,这是,s1便指向了这一地址指向的值”sa”.

String s1;

S1=”sa”;  //执行了这句话后.....

S1=”you”; //执行了这句话之后,又改变了.......

2)转换大小写

ToLower() //把字符转换为小写。

ToUpper() //把字符转换为大写。

注意:

String s =”flower”;

s.ToUpper()  //错误,字符串是不可改变的,并没有转换为大写。

String s1=s.ToUpper() //这样把转换为大写之后的字符串的地址复制给s1,s1指向这个新的字符串。

3)去掉字符串空格

Trim(); //去掉字符串两边的空格

TrimStart() //去掉字符串左侧空格

TrimEnd() //去掉字符串右侧空格

4)字符串的相等比较:

Equals()

例如:

string s1 = "aa";   

bool b = s1.Equals(" AA");

Console.WriteLine(b); //执行结果为false,因为括号内字符串是大写,不过Equels()方法有重载,可以利用枚举,选择不区分大小写。

bool b = s1.Equals("AA",StringComparison.OrdinalIgnoreCase); 

5)字符串的大小比较:

CompareTo();

例如:

string s1 = "11";   //如果调用者比括号内大,则返回1,否则返回-1

string s2 = "21";

int i=s1.CompareTo(s2);   //执行结果-1

6)字符串的分割

Spilt();  //可以将某个字符串按照某个字符,分割成一个数组

string s1 = "aa,bb,cc,dd|ff|ee";

string[] s = s1.Split(',','|');// 将字符串s1,以”,”与”|”进行分割

结果是 aa  bb  cc  dd   ff   ee 等组成的字符串数组。

Spilt()方法有一种重载:

string[] s = s1.Split(c,StringSplitOptions.RemoveEmptyEntries); //后面是一个枚举类型的,作用是可以移除一些空项。

(7)字符串的替换

Replace()函数

使用方法:

string s = "I like books,I enjoy eating books";  //声明一个字符串s

string s1=s.Replace("books", "apples");       //把字符串中的所有”books”改成”apples”

Console.WriteLine(s1);                    //结果是I like apples,I enjoy eating apples

(8)截取子字符串

SubString (int  a) //重载一:从a开始,一直截取到最后

示例:

string s = "I like books,I enjoy eating books";

string s1 = s.Substring(13); //13个元素是第二个I

Console.WriteLine(s1);    //因此结果是I enjoy eating books

SubString(int a,int length)//重载二:从a开始,截取length个元素length是截取的长度。但是如果length参数超过了字符串的长度,就会报错了。

示例:

string s = "I like books,I enjoy eating books";  

string s1 = s.Substring(13,7);  //从第二个I开始截取,截取7个字符

Console.WriteLine(s1);       //结果是I enjoy 

(9)判断字符串内是否含有某个字符。

Contains();

string s = "I like books,I enjoy eating books"; //要检测的字符串

bool b = s.Contains("like");  //判断字符串内是否含有”like”这个字符串

Console.WriteLine(b);      //执行结果返回bool类型的值true

StartWith() //判断字符串是否以某个字符串开头。

EndWith()//判断字符串是否以某个字符串结尾。

(10)判断某个字符在字符串内第一次出现的位置。

IndexOf();

示例string s = "I like books,I enjoy eating books";  

     int index=s.IndexOf("k");  //判断字母”k”第一次出现的位置,返回int类型的结果

     Console.WriteLine(index);//如果没出现该字符,则返回-1,执行结果是10

 

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>

<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------