初识C#

初识C#

一、认识C#

一、.NET与C#

.NET是基于Windows平台的一种技术,是C#的运行环境,.NET是属于微软公司所有。

C#是一种编程语言,是由微软公司开发的一门语言,在Windows系统中是不需要配置C#的运行环境的,因为.NET和C#都是属于微软公司,所以Windows系统中会自带.NET运行环境。

C#只能在Windows系统中使用,因为C#不支持其他的系统。

C#使用的工具是:Visual Studio 2019

1、新建程序

新建程序的步骤:

启动Visual Studio 2019 ------> 新建项目 ------> 生成可执行文件 ------> 运行

2、认识C#程序

1、关键字

I、namespace 关键字:namespace是C#的命名空间,也是C#中组织代码的方式,作用类似于Java中的package(包)。

II、using关键字:作用类型Java中的import(导包的关键字),在C#中使用using来引用其他命名空间。

III、class关键字:在C#中class关键字表示类,C#和Java一样是面向对象的一种语言,在Java中class关键字也表示类。

IV、Main()方法:在C#中的Main()方法和Java中的main()方法的作用是一样的,是程序运行的入口,应用程序从这里开始运行。在C#中的Main()方法有四种形式。

语法:

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

二、C#的变量和常量

1、C#中的数据类型

C#中的数据类型分为两种:基本数据类型和引用型数据类型,

基本数据类型有:int(整型)、long(长整型)、float(单精度浮点型)、double(双精度浮点型)、bool(布尔)、char(字符型)、short(短整型)、byte(位)

引用型数据类型有:string(字符串型)、array(数组)、class(类)、集合

其实C#和Java中的数据类型基本一致,当是C#中的布尔类型的关键字和Java中的不同,使用bool。

注:C#中字符串的关键字首字母是小写的,在为浮点型变量赋值时,C#语言要求赋值数据必须以字母f或F结束。

2、C#中的变量

C#中的变量声明方式与Java是相同的。

变量声明语法:

//语法:   数据类型  变量名称;
//例:
int num;

变量命名规则:

1、组成:52个英文字母(AZ,az)、10个数字(1~9)、下划线(_),除了这些之外不能含有其他的字符;

2、开头:只能以下划线和英文字母开头;

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

4、变量的名称要有意义,尽量用对应的英文命名,具有见名知意的作用;

5、避免使用单个字符作为变量名;

6、使用驼峰命名法。

3、C#中的常量

1、什么是常量

常量就是在程序运行过程中保持不变的值。

2常量的语法

//语法:const 数据类型 常量名 = 值;
//例:
const int num = 10;

3、常量命名规则

1、常量名称必须具有一定的实际意义;

2、常量名最好是以 大写字来命名,中间可根据意义的连接性用下划线做连接;

3、常量名称长度最好不要超过25个字符;

三、C#的Console类

Console是C#中的控制台类,利用它可以方便地进行控制台的输入/输出。

1、C#向控制台输出

常用的输出方法有两个:Console.Write()和Console.WriteLine()

两者的区别在有输出后有无换行,Console.Write()在输出后是没有换行的,Console.WriteLine()在输出后是有换行的。

1、向控制台输出的语法:

//语法: 方法一:
Console.WriteLine();  //输出一行没有任何内容的空行

//方法二:
Console.WriteLine("要输出的值");  
//输出括号里的值,括号里的值如果是变量就不需要加双引号(""),如果是文本就要加双引号

//方法三:
Console.WriteLine("格式字符串",变量列表);
//这是C#中的新语法,先举个例子:
string couruse = "C#";
Console.WriteLine("我的课程名称是:{0}",couruse);
//在这里{}里面的值,我们称之为占位符,占位符从0开始。


2、C#向控制台输入

在Java中不仅能够向控制台输出,还可以向控制台输入;那么C#也一样可以向控制台输出和输入,上面讲了向控制台输出,接着就来说一下向控制台输入吧。

与Console.WriteLine()对应,从控制台输入可以使用Console.ReadLine()方法,

1、输入的语法

//语法
Console.ReadLine();
//这里返回的是一个字符串

Console.ReadLine();这里返回的是一个字符串类型的值,所以要用一个字符串变量去接收它的值

那如果我们要使用整型数据怎么办呢?别担心,一个简单的转化就可以了。

2、强制转换

强制转换有两个方法,在后面的字符串中我们还会学习到其他的强制转换;

强制转换语法:

//语法: 方法一 :数据类型.Parse(string类型);
int age = int.Parse(Console.ReadLine());  
//向控制台接收一个string类型的值强转为int类型的,这里Console.ReadLine是string类型的

//方法二:Convert.To数据类型(任意数据类型);
string num = "20";
int number = Convert.ToInt(num);
//这里是将string类型的值强制转换成int类型的值

四、类和对象

在C#中的类和对象跟Java中的类和对象差不多,但是C#中的多了一个字段

1、自定义方法

在C#中定义方法和Java中的类似

语法:

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

1、访问修饰符:在C#中我们目前学到了两个访问修饰符,一个是public(公有的),另一个是private(私有的)在这里用中括号[]括起来的表示可有可无。

2、方法命名规范

I、方法名要有实际的含义

II、方法名一般使用Pascal命名法

2、理解类和对象

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

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

在类中可以包含字段、属性和方法,每个类可以使用访问修饰符来设置该类的访问权限。

3、注释

在C#中有四种注解:分别是单行注释:// 、文档注释:/// 、块注释:/* */ 、折叠注释:以#region 开头 ,以#endregion结尾

二、C#的语法快速热身

一、C#的选择结构

​ C#中的选择结构和Java中的选择结构其实是差不多的;

C#中的选择结构分为if结构和switch结构;

1、if结构

在C#中if结构和Java中if结构没有什么太大的差距。

C#中if结构也分为四种结构:简单if结构、if…else结构、多重if结构、if嵌套结构;语法和Java中的语法一致,请参照Java中if选择结构语法。

语法:

//简单if结构语法
if(条件表达式)
{
    //代码块
}
//if...else结构语法
if(条件表达式)
{
    //代码块1
}
else
{
    //代码块2
}
//多重if结构
if(条件表达式1)
{
    //代码块1
}
else if(条件表达式2)
{
    //代码块2
}
else
{
    //代码块3
}
//if嵌套
if(条件表达式1)
{
    if(条件表达式2)
    {
        //代码块1
    }
    else
    {
        //代码块2
    }
}
else
{
    //代码块3
}   
2、switch结构

在C#中switch选择结构和Java的也是基本一样,但是C#和Java中还是有区别;

在C#中switch语法:

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

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


在C#中的switch结构中的break是必须有的,但是如果case后面没有语句的话就不需要break。

二、C#的数组与循环结构

1、一维数组

1、声明数组

在Java中声明数组的两种方式:

Java中的数组语法

//方式一
数据类型[] 数组名;
//方式二
数据类型 数组名[];

但是在C#中只有一种声明方式

C#中的数组声明语法

数据类型[] 数组名;

2、获取数组长度

语法:

数据名.Length

3、访问数组元素

语法:

数组名[下标]
2、对象数组

在C#中的对象数组和Java中的对象数组基本是一样的,没有什么太大的差别。

3、循环结构

在C#中循环和Java中的循环是一样的,但是在C#中的foreach循环结构和Java中的不太一样;

在Java中的foreach循环的语法是

for(数据类型 变量名 : 数组名){}

在C#中的foreach循环的语法是

foreach(数据类型 变量名 in  数组名){}

对比Java和C#中foreach循环,Java中的foreach在使用的时候名称是for,中间用冒号( :)分割开来,C#中的foreach循环在使用时的名称是foreach,中间用in分开。但是它们的使用效果是一样的。

C#中的while、do… while、for的语法

//while的语法
while(条件表达式)
{
    //循环代码块
}
//do...while循环的语法
do
{
  	//循环代码块
}while(条件表达式);

//for循环的语法
for(初始化;循环条件;迭代)
{
    //循环代码块
}
//例
for(int i = 0; i<5; i++)
{
    Console.WriteLine(i);  //循环输出i的值
}

三、C#的冒泡排序

1、冒泡排序算法

冒泡排序是用来排序的一种算法,用来排序的算法其实有很多,像快速排序算法、选择排序算法…其中冒泡排序是一个经典的算法。

冒泡排序算法是两两相邻比较;不满足条件就进行交换。

冒泡排序通常结合双重循环来使用:

int[] array = {16,15,80,40,13,25};
int temp; //临时变量
//开始排序---使用冒泡排序进行升序排序
for(int i = 0;i<array.Length-1;i++)
{
    for(int j = 0; j < array.Length-1-i; j++)
    {
        if(array[j] > array[j+1])  //在这里大于符号(>)表示升序,小于符号(<)表示降序 
        {
            //交换元素
            temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp;
        }
    }
}

注:外层循环要数组长度-1.内层循环要数组长度-1-i;

三、C#的属性

一、访问修饰符和this关键词

1、访问修饰符

在前面提到了一下两个访问修饰符:public(公有的)和 private(私有的);

在C#中的访问修饰符我们用一个表格来看一下它们的区别

访问修饰符访问权限访问级别
public不受任何限制最高
private只有类的内部可以使用最低

通过表我们可以知道public和private的区别在哪。

private的使用范围在能在当前类里面使用它,不能在其他类里面使用它,也不调用它,否则就会报错。

2、this关键字

this关键字是指当前对象本身。通过this可以引用当前类的成员变量和方法,但是this不能在静态(static)成员中使用;

二、C#的属性

1、用属性实现字段封装

相对调用方法设置或获得类的私有字段值来说,微软提出了更加优化的解决方案—属性,使用 get 和 set 访问器可以轻松地完成字段的赋值和读取。

get和set的语法:

private string _name;
public string Name
{
	get{ return _name;  }
	set{ _name = value; }
}

在这里get表示返回值,也是只读形式;set表示赋值,也是只写形式;如果要在封装里表示读写模式,就要get和set一起使用,只读就只用get方法,只写就只用set方法;

2、封装

封装表示将东西打包,使其以新的完整的形式出现。

三、值传递和引用传递

参数传递有几种,分别实现什么样的效果

1、值传递

​ 值传递分为基本数据传递和引用型数据传递
​ 基本数据类型传递:形参所做修改不会影响实参
​ 引用型数据类型传递:形参修改堆里面具体值的时候回影响实参

2、地址传递

​ 地址传递也分为基本数据类型传递和引用型数据类型传递,但是地址传递无论是基本数据类型还是引用型数据类型,都会改变的实参。

​ 形参所做修改一定会影响实参
​ 实现方式:在形参和实参前面加ref

四、深入C#的String类

一、C#中的String类

1、常用字符串方法

常用字符串方法表

方法说明
bool Equals (string value)比较一个字符串与另一个字符串value的值是否相等,返回值为bool(布尔)值
int Compare(string strA,string strB)比较两个字符串的大小关系,返回一个整数
int IndexOf(string value)获取指定的value字符串在当前字符串中的第一个匹配项的位置
int LastIndexOf(string value)获取指定的value字符串在当前字符串中的最后一个匹配项的位置
string Join(string separator,string[] value)把字符串数组value中的每个字符串用来指定的分隔符separator连接,返回连接后的字符串
string[]Split(char separator)用指定的分隔符separator分割字符串,返回分割后的字符串数组
string Substring(int startIndex,int length)从指定的 位置startIndex开始检索长度为length的子字符串
string ToLower()获得字符串的小写形式
string ToUpper()获得字符串的大写形式
string Trim()去掉字符串前后两端多余的空格
2、运算符和方法的区别

I、运算符“==”和Equals()方法

​ 运算符“==”和Equals()方法应用于两个字符串,所判断的内容是有差别的。

​ “==”判断的是两个字符串对象在内存中的首地址,即判断是否是同一个字符串对象。

​ Equals()方法判断的是两个字符串对象的值是否相等。

II、“”和String.Empty

​ “”:为String对象分配一个长度为零的存储空间。

​ String.Empty:表示空字符串,不会为对象分配存储空间。

3、连接分割字符串

在C#中的字符串中的连接和分割有专门的方法;连接是Join()方法,分割是Split()方法;

string inputString = "My dream is to become an excellent programmer." //一个固定的字符串
string[] splitString; //分割后的字符串数组
string joinString;  //连接后的新字符串
//以空格作为分割符分割字符串
splitString = inputString.Split(' ');  
//将分割后的字符串使用下划线连接在一起
joinString = string.Join(" ",splitString);
//输出分割后的字符串
Console.WriteLine("分割后的字符串为:");
foreach(string str in splitString)
{
    Console.WriteLine(str);
}
//输出连接后的字符串
Console.WriteLine("连接后的新字符串为{0}",splitString);

运行结果为:

在这里插入图片描述

4、Format格式化

在C#中的String类提供了一个Format()方法对输出的字符串进行格式化;Format()方法允许把字符串、数字或者是布尔类型的变量插入到格式字符串当中。、

语法:

string myString = String.Format("格式字符串",参数列表);
//其中,格式字符串中包含固定文本和格式项,语法如下:
{索引[,对齐][:格式字符串]} //在这里[]中的内容可有可无

格式化数值结果表

字符说明实例输出结果
C货币格式String.Format("{0:C3}",2000)¥2 000.000
D十进制格式String.Format("{0:D3}",2000)2000
F小数点后面的位数固定String.Format("{0:F3}",2000)2000.000
N用逗号(,)隔开的数字String.Format("{0:N}",250000)250,000
P百分比计数法String.Format("{0:P3}",0.29768)29.768
X十六进制格式String.Format("{0:X000}",12)C

二、类型转化

1、简单的类型转换

在C#中的类型转换分为两种:隐式类型转换和显示类型转换

I、隐式类型转换:简单的来说就是小的数据类型转换成大的数据类型;例如int类型转换成float类型或double类型,float类型转换成double类型的,这种就称为隐式类型转换,这种会自动转换。

II、显示类型转换:显示类型转换和隐式类型转换是刚好相反的,显示类型转换就是将大的数据类型转换成小的数据类型;例如将double类型转换成int类型的,这种就要强制转换,例如

double num = 5.2;
int number = 2;
int sum = (int)num + number;
2、数值类型与字符串之间的转换

1、字符串转换为数值型

int.Parse(Console.ReadLine());  //从控制台接收整数
int.Parse(string);   //将字符串转换成整型
float.Parse(string);   //将字符串转换成单精度浮点型
double.Parse(string);  //将字符串转换成双精度浮点型

2、数值型转换为字符串

int age = 18;
string myage = age.ToString();

3、使用Console类进行转换

常用使用Console类进行转换方法表

方法说明
Console.ToInt32()转换为整型(int)
Console.ToSingle()转换成单精度浮点型(float)
Console.ToDouble()转换成双精度浮点型(double)
Console.ToSting()转换成字符串类型(String)

;
int sum = (int)num + number;


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

1、字符串转换为数值型

```C#
int.Parse(Console.ReadLine());  //从控制台接收整数
int.Parse(string);   //将字符串转换成整型
float.Parse(string);   //将字符串转换成单精度浮点型
double.Parse(string);  //将字符串转换成双精度浮点型

2、数值型转换为字符串

int age = 18;
string myage = age.ToString();

3、使用Console类进行转换

常用使用Console类进行转换方法表

方法说明
Console.ToInt32()转换为整型(int)
Console.ToSingle()转换成单精度浮点型(float)
Console.ToDouble()转换成双精度浮点型(double)
Console.ToSting()转换成字符串类型(String)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值