C#语言

本文详细介绍了C#语言的基础知识,包括创建C#程序的步骤、C#与Java的差异、C#的语法特点如循环中的break与continue、数组、冒泡排序法。深入探讨了C#的属性、封装、this关键字的应用、值传递与引用传递。同时讲解了String类的常用操作,如查找、截取、格式化和类型转换。

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

一:第一个C#程序
1.创建C#程序步骤

新建项目——>形成可执行文件——>开始运行

  1. C#的语法基础

    解决方案:一个解决方案中可以有多个项目

    项目:装C#文件

    C#文件:.cs

    C#的可执行文件:.sln

  2. C#的注释
    a.单行:
    //
    
    b.多行
    块注释:/* */  
    
    文档注释:///
    
    c.折叠
    #region
    #Endregion
    
  3. 命名规则

    1.类名:采用驼峰命名法

    2.变量名

    a. 以"_"或字母开头

    b.组成:以英文字母,数字,下划线,除此之位不能有其他的字符

    c.不能是C#的关键字

  4. 类型转换

    a. 数据类型.Parse(String类型的变量)

    b. Convert .To数据类型(任意数据类型)

    c. 任意数据类型:Object

6. C#与Java的不同
C#java
namespacepackage
类名字与源文件自动生成一个Program类,且类名与源文件可以不相同类名与源文件必须相同
导入包usingimport
Main()方法Main(第一个字母大写,且它有四种main方法形式)main(第一个字母小写,且它有只有一种main方法形式)
布尔类型boolboolean
字符串的关键字string(第一个字母小写)String(第一个字母大写)
声明常量const 数据类型 数据名=值;(final)数据类型 数据名=值;
控制台的输入Console.ReadLine();【换行】 Console.Read();【不换行】用Scanner input=new Scanner(System.in);【如:输入一个int类型的数】 int num=input.nextInt();
控制台的输出Console.WriteLine("输出的内容");【换行】 Console.Write("输出的内容");【不换行】System.out.println(“输出的内容”);【换行】 System.out.print(“输出的内容”);【不换行】
二:C#的语法(与Java大致相同)
  1. if结构
```c#
//if							if-else		
			
if(条件)						if(条件)
{							{
  //代码块1							//代码块	1
 }							}
							else
                                			{ 		
    							  	//代码块	2	
    						 	}
----------------------------------------------------------------------------------------

//多重if							嵌套if

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

2.switch结构

   switch(表达式)		(小括号中可以是intshortbytechar{				   枚举类型  、String类型表达式)					
   case 常量1//代码块;							
   	break;
   case 常量2:			(常量的值必须各不相同)
   	//代码块;		
   	break;			(break必须有,但若是两个case之间没有可执行的代码,               
   defaul:				那么前一个case可以省略break)
   	//代码块;							
   	break;
   }

3.循环结构

   while(条件)						do
   {		      					{
      //循环体						//循环体			
   }   							}while(条件);
   
  
    for(初始化部分;条件;迭代)		foreach(元素类型 变量名 in 数组)
    {					{
        //循环体						//循环体
    }					 }
4. 在循环中遇到break与continue的区别

​ break:跳出本层循环,执行循环下面的语句
​ continue:跳出本次循环,进入下一次循环

5. C#数组

a.声明:数据类型[] 数组名;(只能把[]放在数组名前面)

b.长度:数组名.length

c.访问数组元素:下标(C#中叫索引)从0开始

d.初始化:

数据类型[] 数组名=new 数据类型[长度];
数据类型[] 数组名=new 数据类型[]{值1, 值2, …};
数据类型[] 数组名=new 数据类型[长度]{值1, 值2, …};【长度与值数量相同,且这个是与Java不同的,C#特有的】
数据类型[] 数组名={值1, 值2, …};
6.冒泡排序法(需用二重循环)
运用:(升序)
using System;

namespace ConsoleApp10
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] scores = new int[5];				//定义五位学员的数组
            int i, j;
            int temp;				  		//声明一个空变量
            Console.WriteLine("请输入5个学员的成绩:");
            for (i = 0; i < scores.Length; i++)
            {
                Console.WriteLine("请输入第{0}个学员的成绩:", i + 1);
                scores[i] = int.Parse(Console.ReadLine());
            }							//循环接收成绩
            for (i = 0; i < scores.Length - 1; i++)
            {							//外层循环控制比较次数
                for (j = 0; j < scores.Length - 1 - i; j++)
                {					//内层循环控制将最大数放在最后
                    if (scores[j] > scores[j + 1])
                    {				  //如果当前项比前一项大,那么交换元素
                        temp = scores[j];
                        scores[j] = scores[j + 1];
                        scores[j + 1] = temp;
                    }
                }
            }
            Console.WriteLine("排序后的成绩为:");
            for (i = 0; i < scores.Length; i++)
            {							//升序后的输出
                Console.Write("{0}\t", scores[i]);
            }
            Console.ReadLine();
        }
    }
}

【注意:外层循环:数组的长度-1 ,内层循环:数组的长度-1-i】

三:C#属性
1.访问修饰符
public:公开的
private:私有的
protected:受保护的
internal:默认的
2. this关键字
a. this是什么?

this指当前对象本身,可以通过this引用当前类的成员变量合方法。

b. this有什么用?

可以解决成员变量和局部变量名冲突的问题

c.运用(this关键字):
class Student
{
    private string 【_name】;
    public void SetName(string 【_name】)
    {					//方法中的【局部变量名与类成员变量名】相冲突
        this._name = _name;	        //可以用this区分局部变量名与类成员变量名
    }
    public void Show()
    {
        Console.WriteLine("大家好!我叫{0}。", this._name);
    }
}
3.封装

A.成员:字段(private),属性(public),方法

a.字段

字段通常是私有的,若需访问,则可以通过set和get访问器

语法:
private  string _name;			//字段以private修饰,且变量名以"_"开头
    public string Name{			//数据类型要跟字段的数据类型相同,
        				//且属性名与变量名相同,除去"_",第一个字母大写即可
    get{return _name;}		//返回值
    set{_name=value;}		//赋值
    }
b.属性

1.结合了字段和方法得到实现方式称之为属性

2.属性的访问类型:

只读属性:只包含get访问器

只写属性:只包含set访问器

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

3.属性跟方法的区别

C#中的属性访问器后不使用(),因为访问器没有返回值,所有也不需要指定void。

c.方法运用
using System;
namespace ConsoleApp4
{
    class Student
    {
        private int _age;
        public int Age			//int类型的属性
        {
            get 
           {
                return _age;		//返回值
            }
            set
             {
                   _age=value;  	//赋值
             }
        }
    }

   class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.Age=40;				//运用属性中的set访问器,赋值
            Console.WriteLine(stu.Age);		//运用属性中的get访问器,输出返回值          			 
        }
    }
}
4.值传递与引用传递
1.值传递(有两种)

a.基础:方法中的形参不会改变实参

b.引用(如:数组):方法中的形参能改变实参

2.引用传递:

(关键字:ref)方法中的形参能改变实参

四:C#的String类
  1. C#中常见的字符串(与Java大致相同)
a. 查找下标
InderOf(“查找的字符”) 从字符串中第一个找到字符的下标
LastInderOf(“查找的字符”) 从字符串中最后一个找到字符的下标
b.截取字符串
Java : Substring (开始下标,截取字符串的终止下标)
C# :Substring (下标,截取字符串的长度)
c.字符串的大写与小写
string ToUpper():大写
string ToLower():小写
d. 分隔:Split(‘分隔符’)
e. 连接:Join(“连接符”,字符串)
f:去掉空格:Trim()
2. Format格式
a.语法

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

【格式字符串又包括固定文本和格式项,格式项的形式:{索引[,对齐][:格式字符串]}】

b.格式化数值结果表
字符说明实例输出
C货币格式String .Format("{0:C2}",2000)¥2000.00
D十进制格式String .Format("{0:D2}",2000)2000
F小数点后面的位数String .Format("{0:F2}",2000)2000.00
N用逗号隔开的数字String .Format("{0:N}",2000)2,000
P百分比计数法String .Format("{0:P2}",0.5545)55.45
X十六进制格式String .Format("{0:X000}",12)C
3.简单的类型转换

1.隐性:范围大的类型转换为范围小的

2.显性:范围小的类型转换为范围大的

a.强转(丢失了精确度)

如:int num=(int)86.9; num=86;

b. string类型的转换(保留精确度)

如(将string转换为double):double num =double .Parse(86.9); num =87;

c. Convert类转换(任何类型之间的相互转换)
方法说明
Convert .ToInt32()转换为int型
Convert .ToSingle()转换为单精度浮点型(float)
Convert .ToDouble()转换为双精度浮点型(double)
Convert .ToString()转换为string型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值