C#之初体验

本文作为C#的初学者指南,详细介绍了如何创建第一个C#程序,包括新建项目、认识控制台应用程序结构、变量和常量、Console类的使用。深入探讨了C#的类和对象,以及C#语法的基础,如选择结构、循环结构、冒泡排序。此外,还讲解了私有访问修饰符、this关键字、属性以及值传递和引用传递的概念。最后,简要讨论了C#中String类的常用方法和类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#之初体验

c#是一门高级编程语言,它的运行环境为**.NET**,该环境由Windows系统自带,C#的编辑工具为Visual Studio ,简称VS,该软件分不同版本,本人目前使用Visual Studio 2019版。接下来让我们进入C#的语言世界!

1、第一个C#程序

1.1 第一个C#程序的创建

1.1.1 新建程序
  1. 启动Visual Studio 2019
  2. 新建项目
  3. 生成可执行文件
  4. 开始运行
1.1.2 认识控制台应用程序文件夹的结构

解决方案和项目都是Visual Studio 提供的有效管理应用程序的容器,一个解决方案可以包含一个或多个项目,而每一个项目都能够解决一个独立的问题。注意:每一个项目都只能含有一个Main方法。

1.1.3 认识C#程序
  • namespace:c#命名的空间,用于整理紧密相关的代码
  • using:用于引用其他命名空间
  • class:表示类
  • Main():程序的入口,每一个项目都只能含有一个Main方法,有四种形式
static void Mian(string []args){}
static void Mian(){}
static int Mian(string []args){}
static int Mian(){}

1.2 C#中的变量和常量

1.2.1 C#中的数据类型
常用数据类型javaC#举例
整型intint年龄
浮点型floatfloat成绩
双精度型doubledouble圆周率
字符串型Stringstring姓名
布尔型booleanbool是否是神

注意

  • C#中布尔类型的关键字与java不同,适用bool,C#中字符串型的关键字首字母是小字的。
  • 在为浮点型变量赋值时,C#语言要求赋值数据必须以字母fF结束。
1.2.2 C#中的变量

语法:数据类型 变量名称;

命名规则:

  • 组成:52个英文字母(az,AZ),10个数字(0~9),下划线(_),除此之外不能含有其他的字符。
  • 开头:只能以字母或下划线开头。
  • 不能使用的:不能是C#中的关键字。
1.2.3 C#中的常量

常量是在程序运行过程中保持不变的值,定义语法如下

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

例:

public const int day = 7;

1.3 Console类

1.3.1C#向控制台输出和从控制台读入

一.

Console.WriteLine();

Console.WriteLine(要输出的值);

Console.WriteLine("字符串格式",变量列表);

两种输出方式比较:

Console.WriteLIne(name+","+course+","+age);//加号连接

Console.WriteLIne("{0},{1},{2}",name,course,age);//格式字符串

不难看出格式字符串更简单,代码也容易维护。

二.

Console.ReadLine();
string name = Console.ReadLine();//接收
int num = int.Parse(Console.ReadLine());//强转,只能转换string
int num = Convert.TOInt32(Console.ReadLine());//强转,任意类型

1.4类和对象

语法:

[访问修饰符] 返回值 方法名 (参数列表)

{

//方法主体

}

访问修饰符:public,private(接下来会有相关介绍)

返回值 参数列表 方法名 方法主体:与java相同,不做多余介绍。

理解类和对象:

类就是创建对象的模板,对象是类的一个具体实力,这就是类和对象的关系。

c#中定义类的语法

[访问修饰符] class 类名

{

//类的主体

}

类的成员包含 字段 属性 方法 (字段和属性的区别将在下文介绍)

1.5注释

多行注释:

1.文本注释:

///

///这是文本注释

///

2.块注释:

/* 这是块注释 */

单行注释:// 这是单行注释

2、C#语法快速热身

2.1选择结构:

if结构

C#中if结构的语法与java中的完全相同,我们可以迅速回顾

if基本结构

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

if-else结构

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

多重if结构

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

if嵌套结构

if(//条件)
{
	if(//条件)
	{
		//代码块
	}
	else
	{
		//代码块
	}
}
else
{
//代码块
}
switch结构(等值判断)

语法:

switch(表达式)
{
	case 常量表达式1;
    //代码块
	break;//必须有
    default:
    //代码块 
    break;//必须有     
}

c#与java最大的区别在于break的存在,若在case下有内容,则必须有,这就是C#的switch.

2.2循环结构

首先,循环不是无休止的进行的,满足一定条件的时候循环才会继续,称为“循环条件”,循环条件不满足时,退出循环;其次,循环结构时反复进行相同的或类似的一系列操作,称为“循环操作”。
用于打断循环结构执行顺序的两个关健字:

break:用于跳出循环,执行下一条程序。

continue:用于结束本次循环,进入下一次循环。

while循环

在这里插入图片描述
语法:

while(条件)
{
	//代码块;
}

使用方法:

(1)声明并初识化循环变量。

(2)判断循环条件是否满足,如果满足则执行循环操作;否则退出循环。

(3)执行完循环操作后,再次判断循环条件,决定继续执行循环或退出循。

do-while循环

在这里插入图片描述

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

使用方法:

(1)声明并初识化循环变量

(2)执行一遍循环操作

(3)判断循环条件,如果循环条件满足,则循环继续执行,否则退出循环。

for循环

在这里插入图片描述
在解决有固定的循环次数的问题时,首选for循环。

语法:

for(表达式1;表达式2;表达式3)
{
    //循环操作
}
例:
for(int i = 0 ;i<100;i++){
	//循环操作
}

使用方法:

(1)执行初始部分

(2)进行循环条件判。

(3)根据循环条件判断结果。如果为true,则执行循环体;如果为false,则退出循环,步骤4和步骤5均不执行。

(4)执行迭代部分,改变循环变量值。

(5)一次重复步骤(2)~(4),直至退出for循环。

foreach循环

foreach结构的执行过程是循环体依次取出数组中的每一个元素,然后对每一个元素都执行一次循环体操作。

语法

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

注意:foreach结构不能改变数组中各元素的值;如果需要改变数组中元素的值,应该使用for循环。

2.3冒泡排序

冒泡排序算法

冒泡排序就像它的名称一样,冒泡排序是从底层的元素开始,比较它和它上方紧挨着的元素,如果下面的元素小于上面的元素,就交换它的位置,否则保持原样,如此重复下去,直到所有的元素按从小到大的顺序排列。使用双重循环进行实现。

冒泡排序速记口诀(升序)

  • N个数字来排队,两两相比小靠前。
  • 外层循环i-1,内层循环j-1-I。

3. 使用属性升级MyBank

3.1 private访问修饰符

publicprivate 区别:

如果将某个字段或者方法声明为public,就表示其他类可以访问这个字段或方法,如果声明为private,那么该字段或方法只能在本类中使用。

如果在成员定义之前没有指定修饰符,那么这个类成员的访问权限默认为internal.

访问修饰符访问权限
public不受任何限制
private只有类的内部可以使用
protected需要权限才能使用

3.2 this关键字

使用this关键字可以解决成员变量和局部变量名称的冲突问题。

this关键字代表的是当前的对象,在类的内部,可以用this关键字访问类的成员。

注意:this是当前类的引用,不能在静态成员中引用。

3.3 C#属性

用属性实现字段封装

封装是将数据和操作方法保存在一起的技术,或者有选择的隐藏或公开类中的属性和方法。

private string name;
public string name
{
	get{return name;}   //只读
	set{name=value;}	//赋值(只写属性)
}

优点

  • 避免使用非法数据赋值
  • 保证数据的完整性
  • 避免类内部发生修改,导致整个程序修改。

3.4 值传递与引用传递

值传递:分为基本数据类型和引用数据类型:

  • 基本数据类型:形参所作修改不会影响实参。
  • 引用数据类型:形参如果修改具体的值会影响实参。(如果形参修改了指向的地址,那么接下来形参做的任何一项改变都不会影响实参)

引用传递

  • 在实参和形参前面多了一个关键字:ref
  • 无论是形参还是实参所作修改都会受影响
  • 传递都是地址
public void show()
{
  ....
  int num1 ,num2;
  swap(ref num1,ref num2);
}

public void Men(ref int num1,ref int num2) //ref关键字修饰的参数可以将被调用方法中参数的更新值传递给调用者
{
	......
}

4. 深入C#的String类

4.1 常用的字符串处理方法

方法说明
Replace(String old, String newStr):替换
bool Equals(string value)比较一个字符串与另一个字符串value的值是否相等,若两者相等,返回true否则 返回false
int IndexOf(string value)获取value所在的指定的位置
int lastIndexOf(string value)获取指定的字符串value在当前字符串中最后一个匹配的位置
string Substring(int index)从指定位置sta开始检索长度为length的字符串
string ToUpper()获得大写的形式
string ToLower()获得字符串的小写形式
string []Split(char separator)用指定的分隔符separator分割字符串,返回分割后字符串的数组
Concat()进行字符串的连接
string Trim()去掉字符串前后两端多余的空格
static IsNullOrEmpty(String)既可以判断空对象的字符串,又可以判断长度为0的字符串
Remove(int index,int length);从开始下标到length-1的内容都被删除

4.2 Format格式化

客户大多数都需要按照特定的格式在屏幕上输出程序数据,C#的string类提供的一个Format()方法对输出的字符串进行格式化,Format()方法允许把字符串,数字或布尔类型变量插到格式化字符中。

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

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

例如:

String myString =String.Format("{0} 乘以 {1} 等于 {2}",2,3,2*3);

​ 格式化数值结果表

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

4.3 类型转换

1.简单的类型转换

  • 隐式类型转换:int型可以隐式转换为float型或double型,float型可以隐式转换为double型。

    常用于数值型之间,将取值范围小的数值类型转换为取值范围大的数值类型。

  • 显示类型转换:等同于java中的强制转换。

    常用于数值型之间,将取值范围大的数值类型转换为取值范围小的数值范围

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

  • 整型:int.Perse(string);
  • 单精度浮点型:float.Perse(string);
  • 双精度浮点型:double.Perse(string);

3.使用Convert类进行转换

方法说明
Convert.ToInt32()转换为整型(int 型)
Convert.ToSingle()转换为单精度浮点型(float型)
Convert.ToDouble()转换为双精度浮点型(double型)
Convert.ToString()转换为字符串类型(string型)
Convert.ToInt64()转换为长整型(long 型)

Parse()方法:将字符串转换为其他类型

Convert类:任何基本数据之间的相互转换。

后言

简单的C#体验结束啦,希望大家能有所收获!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值