C#语言

C#程序的创建

C#程序的创建分为三步:

一、启动Visual Studio 2012

程序启动后,需要选择最经常从事的开发活动类型,以便于Visual Studio 将环境配置为最方便使用的环境,我们经常要做的是C#开发,所以选择"Visual C#开发设置"。

二、 项目

(1)在Visual Studio 菜单栏中选择"文件"—“新建”—"项目"选项,弹出"新建项目"对话框。

(二)在左侧的项目类型中选择"Visual C#"选项,在右侧的模板列表中选择"控制台应用程序"选项。

(三)在"名称"文本框输入"HelloWorld"。

(四)为项目选择一个保存的位置,然后单击"确定"按钮,就创建了一个C#代码模板。

(五)在Main()方法中添加代码。

三、生成可执行文件

在Visual Studio 菜单栏中选择"生成"——“生成可执行文件"选项,如果错误列表中没有显示错误警告,并且Visual Studio 的状态栏中显示"生成成功”,就表示我们的代码没有编译错误,可运行了。

四、开始运行

在Visual Studio 菜单栏中选择"调试"——"开始运行(不调试)"选项,执行C#应用程序时,可以使用.NET Framevork提供的以下快捷键。

F5:启动

Ctrl+F5开始执行不调试。

F9:设置或取消断点

Ctrl+F9:取消断点

F10:单步执行

F2:转到所调用过程或变量的定义

Ctrl+F2:将焦点转移到类的下拉列表框

认识C#程序

1、认识namespace关键字

namespace(命名空间)是C#中组织代码的方式,它的作用类似于Java的package(包),这样我们就可以把紧密相关的一些代码放在同一个命名空间中,大大提高管理和使用效率。

2、using 关键字

使用using关键字来引用其他命名空间,它的作用和Java中的impact类似。

3、calss 关键字

calss关键字表示类,我们编写的代码都应该包含在一个类里面,类要包含在一个命名空间中。C#与java不同的是,C#不要求类名必须与原文件名一样。

4、Main()方法

C#中的Main()方法和Java中的main()方法作用是一样的,是程序运行的入口,与Java不同的是C#的Main()有四种形式,Java只有一种。C#中的Main()方法首字母必须大写,Main方法的返回值可以是void或者int 类型,Main()方法可以没有命令行参数。

语法如下:

static void Main (string[] args){}
static void Main (){}
static int Main (string[] args){}
static int Main (){}

5、关键代码

Main()方法中1添加的两行代码就是这个小程序的关键代码,是用来输出和输入的。

Console.WriteLine("Hello World");
Console.ReadLine();

C#中的数据类型

C#中布尔型的关键字与Java不同,使用bool,C#中字符串型的关键字首字母是小写。在位浮点变量赋值时,C#语言要求赋值必须以字母f或F结束。

C#中的变量

C#的变量命名规则与Java也基本相同,只是"$"符号在C#中是不能使用的,因此变量的命名规则可以总结为以下三条:

1、52个语文字母(A~Z az)、10个数字(09)、下划线(_),除此之外不能含有其他的字符。

2、开头:只能以字母或下划线开头。

3、不能使用的:不能是C#中的关键字。

语法如下:

数据类型 变量名;


const 数据类型常量名称=值;

类和对象

自定义方法

在C#中定义方法的语法和Java语法类似,语法如下:

[访问修饰符]返回值类型 方法名(参数列表)
{
		//方法的主体
}
1、访问修饰符

在C#中用得最多的是public (公用的)、private(私有的)区别在于公共的可以被任何类访问,而私有的只能在它所在的方法中使用,当然除此之外还有两个不常用的修饰符protected(受保护的)只能在它所在的类中使用,internal默认修饰符,同一程序集中的任何代码都可以访问该类型或成员,但其他集中的代码不可访问。

2、方法的返回值类型

方法是可以实现特定功能的模块,可供他人调用,调用之后返回一个值,返回值的数据类型必须是方法的返回值类型,如果方法不返回任何值,就使用void关键字。

3、方法名

方法名名称应该有明确的含义,最好要见名思意,这样使用起来更方便。

4、参数列表

调用方法时,可以向方法中传递参数,参数列表中的每个参数都是通过"类型参数名"形式进行声明的,每个长是之间用逗号隔开。

5、方法的主体C

自定义方法时,应该先写方法的声明,包括访问修饰符、返回值类型、方法名、参数列表、然后写方法的主体。

理解类和对象

类是创建对象的模板,对象是类的一个具体实例,这就是类和对象之间的关系,也可以结合Java的类和对象来理解。

C#语言中,定义类的语法如下:

[访问修饰符]class类名
{
	//类的主体
}

在C#中类的定义与Java语言有些相似。在类中可以包含字段、属性和方法,每个类可以使用访问修饰符来设置该类的访问权限。

注释

C#注释与Java类似,它的行注释和块注释和Java完全相同,但文档注释略有不同,C#中使用"///",且文档注释的每一行都以"///"开头,C#中的说明注释把方法的代码写在#region 和 #endregion之间。

★规范:类名前应使用文档注释,说明类的简单功能和使用方法。

​ 方法前使用注释,说明方法的功能、参数含义、返回值等

​ 关键性的语句要使用注释,如变量声明、条件判断、循环等。

选择结构

if结构

C#中的if结构与Javaif结构完全相同,if选择结构if分为基本结构if. if-else结构 . 多重if. 嵌套if这些都是选择结构而他们的语法和作用都不同, if基本语法:

if(条件)
{
//代码块
}

它一般由于处理单一或组合条件的情况,流程图如下:if的执行顺序为:先判断在执行,为真执行为假就结束执行
if-else选择结构
if -else语法:

if(条件)
{
    //代码块1
}
else
{
        //代码块2
}

if-else一般可以处理简单的条件分支情况。
if-else其实跟if执行顺序是一样的,只不过它条件为false时要执行else的代码块
多重if选择结构
多重if语法:

if(条件1)
{
    //代码块1
}
else if(条件2)
{
    //代码块2
}
else if(表达式3)
{
    //代码块3
}
else
{
    //代码块4
}

多重if用于处理连续区间的条件分支情况。
多重if执行顺序:先判断如果条件为true执行如果条件为false在判断在执行.
嵌套if选择结构
嵌套if语法:

 if(条件1)
 {
        if(条件2)
       {
            //代码块1
       }
      else
      {
            //代码块2
      }
  }
else
{
            //代码块3
}

​ 嵌套if可以处理复杂的分支。
嵌套if执行顺序:先判断条件成立就进入内层if,条件不成立就进入else.if选择结构。

注意:C#中大括号"{“和”}"各占据新的一行。

switch选择结构

C#中的和Java的语法不同之处,java 中switch的语法如下:

  switch(表达式)
  {
    case 常量1:
        //语句;
        break;//可以没有
    case 常量2:
        //语句2;
        break;//可以没有
        ......
    default:
        //n;
        
  }

C#中的switch它的语法如下:

 switch(表达式)
  {
    case 常量1:
        //语句;
        break;//必须有
    case 常量2:
        //语句2;
        break;//必须有
        ......
    default:
        //n;
        break;必须有
}

C#语言要求每个case和default语句中必须有break语句,除非两个case中间没有其他语句,那么前一个case可以不包含break,C#中的switch判断更加灵活,判断的表达式或变量还可以是字符串。

数组与循环

一维数组

在Java中是声明数组是怎么声明的呢?下面两种方式都正确

数据类型[] 数组名;

数据类型 数组名[];

但是在C#中只能用第一种方式,即不能把方括号放在数组名的后面

数据类型[] 数组名;

C#中的数组和Java中初始化数组的语法是一样的,

通过数组的Length属性,可获得数组的长度,语法如下:

数组名.Length

和Java一样,访问数组的元素使用的形式如下,下标从0开始。在C#中我们也把下标叫做索引

语法:

数组名[下标]

注意:如果在程序中需要得到数组的长度,应该使用"数组名.Length"语句获得,而不是用数组定义的长度。

循环结构

C#中的三种循环其实就是Java中while循环 do-while循环 for循环他们的语法.用法和注意事项如下:
while循环
while循环结构语法:

  while(循环条件)
  {
        //循环操作
    }

wile循环结构的执行顺序一般是:1.声明并初化循环变量2.判断循环条件是否满足,如果满足执行循环操作;否则退出循环。3.执行完循环操作之后,再判断循环条件,决定继续执行循环或退出循环,流程图如下:注意:先判断在执行,在一开始循环条件就不满足的情况下循环结构一次也不会执行。
do-while循环
do-while循环结构语法:

do{
    //循环操作
}
whille(循环条件);

do-while执行顺序一般是:1.声明并初化循环变量。2.执行一遍循环操作。3.判断循环条件,如果循环条件满足,则循环继续执行,否则退出循环。跟while循环相比不同的是,do-while循环结构将while关键字和循环条件放在后面,而且前面多了关键字do,后面多了分号。执行顺序也不同,while是先判断再执行;do-while是先执行再判断。
注意:do-while循环结构while后面的分号必须的,千万不能少否则程序编译将出现编译错误。说到循环结构就又要说起一个重点,程序调试,什么是程序调试?该怎么用?我们来简单的概括一下程序调试是满足暂停程序,观察变量和逐条执行语句等功能的工具和方法的总称。调试的步骤:设置断点 启动bug模式 单步运行 观察变量。
for循环结构
for循环语法:

for(表达式1;表达式2;表达式3;)
{
    //循环体
}

for循环结构中三个表达式的含义:表达式1:赋值语句,循环结构的初始部分,为循环变量赋初值,举例:int i= 0表达式2:条件语句,循环结构的循环条件,举例:i<100表达式3:赋值语句,通常使用++或–运算符,循环结构的迭代部分,通常用来修改循环变量值,举例:i++这三个表达式都可以省略,但表达式分号不能省略,如果省略了表达式,要注意保证循环能够正常运行。
注意事项:for循环关键字后面括号的三个表达式必须用";"号隔开。

除了这三种循环之外,C#中还会使用到另一个循环就是foreach循环在此做简单的介绍。

foreach循环语法如下:

foreach(元素类型 元素变量名 in 数组)
{
	//代码块
}

foreach循环结构用于遍历一个数据集合,(目前只学习了数组)的每一项,需要设置一个标识符(变量)依次表示其中的每一项。在循环期间,可以对各数数据项执行指定的操作。foreach结构的执行过程是循环体依次取出数组中的每一个元素,然后对每一个元素都执行一次循环体的操作。语法中的"元素"是一个只读变量。

冒泡排序

冒泡排序是从底层的元素开始,比较它和它上方挨着的元素,如果下面的元素小于上面的元素,就交换它们的位置,否则保持原样。然后转移到往上一个元素,重复以上过程,最后,最小的元素转移到了顶部。

如果记不住就以两两相邻比较满足规则不做改变,不满足交换位置,大的在前,小的在后的方式。

C#属性和this关键字

在面向对象的编程中,this关键字是指当前对象的本身。通过this可以引用当前类的成员变量和方法。

在C#中,字段通常是私有的。人工要访问类中的字段,需要通过get和set访问器实现,这种结合了字段和方法实现方式我们称之为属性(property)。get访问器用来返回相应的私有字段的值,必须用return语句返回字段的值。set访问器用来设定相应的私有字段的值,set访问器类似于返回类型为void的方法。它使用一个隐含的输入参数value。语法如下:

private string _name;
public string Name
{
	get{return _name}
	set{_name=value}
}
属性访问类型如下:

只读属性,只包含get访问器。

只写属性,只包含set访问器。

读写属性,包含get和set访问器。

注意:如果要将一个属性设置为只读属性,即能读取字段的值而不能给该字段赋值,那么,只需要将这个属性定义get访问器,但不定义set访问器就可以实现。在C#中,一般类的私有字段和属性命名会采用不同的命名法。在为类的私有字段命名时,要以"_"开头。

值传递和引用传递

值传递:
基本数据:形参所做修改不会影响实参
引用:形参修改堆里面具体值的时候回影响实参
引用传递
形参所做修改一定会影响实参
实现方式:在形参和实参前面加ref

C#中的String类

String字符串的类,它位于System命名空间中。string只是String的一个外号。String是类名,string是关键字。

常用的字符串处理方法如下:

方法说明
bool Equals(sting value)比较值是否相等
int Compare(string strA,sting strB)比较两个字符串的大小关系,返回一个整数,strA小于strB,则返回只小于0;若等于则返回0;若大于返回大于0的指。
int IndexOf(string value)获取指定value字符串在当前字符串第一个中匹配项的位置,如果找到了value,就返回它的位置,没找到就返回-1。
int LastIndexOf(string value)获取指定value字符串在当前字符串第一个中匹配项的位置,如果找到了value,就返回它的位置,没找到就返回-1。
string Join()以指定的字符串连接数组
static Concat()连接(字符串)
string Split()分割字符串
string Substring()截取字符串
string ToLower()获得字符串小写形式
string ToUpper()获得字符串大写形式
string Trim()去掉字符串后两端多余的空格

Format格式化

C#中的String类提供的一个Format()方法对输出的字符串进行格式化。Format()方法允许把字符串、数字或布尔型的变量插入到格式化字符串中,它语法如下:

String myString =String.Format("格式字符串","参数列表");

其中,格式化字符串包含固定文本和格式项,格式项形式如下:

{索引[,对齐] [:格式字符串]}

索引从0开始,与变量列表对应,对齐部分设置显示的宽度和对齐的方式,是一个带符号的整数,整数从大小表示数据宽度,正数为右对齐,负数为左对齐;格式字符串部分包含格式说明。

以下是格式化数值结果表:

字符说明示例
C货币格式String.Format("{0:C}")
D十进制String.Format("{0:D}")
F小数点后的位数String.Format("{0:F}")
N用逗号(,)隔开的数字String.Format("{0:N}")
P百分比计数法String.Format("{0:P}")
X十六进制格式String.Format("{0:X000}",12) (输出C)

类型转换

其实在java中的自动类型转换和强制转换就是C#中所说的隐式类型转换和显示转换。

1、隐式:自动转换
int b = 1;
long a = b;
2、 显示:强转
数据类型.Parse(String)
Convert.To数据类型(任意数据类型)

数值类型与字符串之间的转换

1、字符串转换为数值型

int.Parse(string);

将字符串转换为单精度浮点型

float.Parse(string);

将字符串转换为双精度浮点型

double.Parse(string);

2、数值型转换为字符串

int age =1;

string myage =age.ToString;

Convert类转换

Convert可以在各种基本类型之间执行数据类型的互相转换。Convert类为每种类型转换都提供了一个对应的方法Convert类常用的方法如下:

方法说明
Convert.ToLnt32()转换为整形(int型)
Convert.ToSingle()转换为单精度浮点型
Convert.ToDouble()转换为双精度浮点型
Convert.ToString()转换为字符串类型(string型)

以上就是简述C#语言的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值