河北对口计算机高考C#笔记(2026高考适用)---持续更新~~~~

发布于:2025-06-10 ⋅ 阅读:(27) ⋅ 点赞:(0)

C#笔记

C#发展史
  1. 1998年,C#发布第一个版本。
  2. 2002年,visual studio开发环境推出
C#的特点

1.语法简洁,不允许直接操作内存,去掉了指针操作

2.彻底面向对象设计。

3.与Web紧密结合。

4.强大的安全机制,语法错误提示,引入垃圾回收器机制。

5.兼容性。

6.完善的错误,异常处理机制。

.NET(平台)

面向网络支持各种用户终端的开发环境

  1. 公共语言运行时(CLR): 中间语言代码,负责将不同的编程语言的编译结果统一。
  2. 类库:系统封装好的工具包,可以直接拿来使用。

.NET发展

  1. 2000 比尔盖茨提出构想
  2. 2002 微软发布了.NET Framework1.0
  3. 2003 微软发布了.NET Framework1.1
  4. 2005 微软发布了.NET Framework2.0
  5. 2006 微软发布了.NET Framework3.0
  6. 2010 微软发布了.NET Framework4.0
  7. 2020 .Net5.0发布
Visual Studio项目管理

1.解决方案:包含多个不同类型的项目,是一个项目集合,大的文件夹。

.Net中常见的文件类型

​ .sln:解决方案文件

​ .csproj:项目文件

​ .cs:C#源码文件

​ .resx:资源文件

​ .aspx:网页文件

​ .asmx:XML Web文件

​ .config:配置文件

​ .suo:解决方案用户选项

命名空间(namespace):命名控件在C#中起到组成程序的作用,也可以作为外部程序调用的凭证。

:class为类的关键字,每个对象都属于一个类,类是对象的模板。

关键字:系统提前赋予特定意义的一些单词。

标识符

开发过程中,需要自定义命名的,如变量名,常量名,对象名,方法名,函数名等都属于标识符。

命名规则:由字母、下划线、数字组成,且数字不能开头,不能使用关键字。

Main方法(程序入口)

C#程序中的Main方法必须声明为static,并且区分大小写

 static void Main(string[] args)
 {
    //程序代码
    
 }
/*static:静态修饰符
void:表示无返回值
string[] args:表示参数为数组*/
注释语句

功能:注释起解释代码的作用,不会参与代码的编译工作

  1. 行注释:以“//”开头,将一整行代码注释掉
  2. 块注释:以“/* ”开头,中间包含注释内容,以“ */”结尾
输入方法和输出方法
  1. 输入方法:Console.Readline() ------从键盘获取一行字符串

    ​ Console.Read() -------从键盘获取一个字符

  2. 输出方法:Console.WriteLine() -----将数据输出至屏幕并且加上一个换行符

    ​ Console.Write() -----将数据输出至屏幕

    注意:

    1.同一行代码可以书写多条语句。

    int a; int b; int c;
    

    2.将一条语句拆分成多行书写。

    Console.WriteLine
    ("你好");
    

数据类型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

值类型
简单类型
  1. 整数类型

    类型标识符 说明 占用位数 取值范围
    sbyte 带符号字节型 8 -27~27-1
    byte 无符号字节型 8 0~2^8-1
    short 带符号的短整型 16 -215~215-1
    ushort 无符号的短整型 16 0~2^16-1
    int 带符号的整型 32 -231~231-1
    uint 无符号整型 32 0~2^32-1
    long 带符号的长整型 64 -263~263-1
    ulong 无符号的长整型 64 0~2^64-1
  2. 实数类型

    类型标识符 说明 占用位数 精度
    float 单精度浮点数 32 6~7位
    double 双精度浮点数(取值范围最大) 64 15~16位
    decimal 固定精度浮点数(精度最高) 128 28~29位

    注意:

    ​ 1.包含小数点的数值会被默认位double类型。

    ​ 2.在数值后边加F或f可以强制指定为float类型。

    ​ 3.在数值后边加M或m可以强制指定为decimal类型。

    Double double1 = 3.14;
    float float1 = 3.14f;
    decimal decimal1 = 3.1415926m;
    
  3. 字符类型

    采用Unicode编码格式,每个字符占用两个字节。

    定义字符类型使用char关键字,值使用单引号(‘’)括起来。

    char chr1 = 'a';
    char chr2 = '你';
    

    注意:

    ​ 1.如果使用双引号,即使包含一个字符也会认定为字符串类型,字符类型是基本数据类型,字符串类型为用引用类型。

  4. 布尔类型

    Boolean flag1 = true;
    Boolean flag2 = false;
    

    注意:

    布尔类型不能直接转换为int类型。

复杂类型
  1. 结构类型

    将分散简单变量整合为一体,体现数据之间的内在联系。

    //定义语法
    struct 结构名称
    {
        数据类型 字段名1;
        数据类型 字段名2;
                 ...
              }
                                                                                              
    //定义一个具有姓名和年龄的结构类型Student
    struct Student
    {
        public string name;
        public int age;
        public char sex;
    }
    
  2. 枚举类型

    指程序中某个变量具有一组确定的值,通过枚举可以将其值一一列出来。

    //定义枚举
    enum 枚举名{
        枚举成员1,
        枚举成员2,
        ...
    }
                                                                                              
    enum season
    {
        spring,
        summer,
        autumn,
        winter
    }
    
引用类型
object类型

object类型是所有类型(值类型和引用类型)的基类,C#中所有的类型都是直接或者间接继承object,一个 object类型的变量可以赋任何类型的值。

int x = 100;
object obj;
obj=x;
Object obj2 = "你好";
Console.WriteLine(obj);
Console.WriteLine(obj2);
string类型

字符串对象,表示一个Unicode字符序列。String和string都能定义字符串变量

String str = "Hello World";
string str2 = "你好";
Console.WriteLine("{0},{1}",str,str2);
值类型与引用类型的区别

值类型:栈

引用类型:堆

类型转换
隐式转换

不需要加以声明就可以进行的转换,原类型取值范围包含在目标类型中,就可以实现隐式转换。

小--------->大

int a = 12345;
long b = a;
显示转换(强制转换)
//(类型标识符)表达式
float a = 123.45f;
Console.WriteLine((int)a);
//实数类型转换为整数类型通常辉出现精度丢失问题
使用方法进行数据类型转换

1.Parse方法:可以将字符串转换为数值型。

//语法:数值类型名称.Parse(字符串表达式)
int a = int.Parse("123456");
Console.WriteLine(a);

int pwd = int.Parse(Console.ReadLine());
Console.WriteLine(pwd);

2.Convert类的方法:将一种基本数据类型转换为另一种基本数据类型

//语法:Convert.转换方法(值)
int a;
a = Convert.ToInt32("123");
Console.WriteLine(a);

int pwd;
pwd = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(pwd);
装箱与拆箱

实现值类型与引用类型的相互转换。

  1. 装箱转换(将一个值类型的数据转换为对象类型的数据)

    int i = 10;
    object obj = i;
    
  2. 拆箱转换(将一个引用类型的数据转换为值类型数据)

    int i = 10;
    object obj = i;
    int j = (int)obj;
    
变量与常量
常量
  • 概念:在程序运行过程中,其值不会改变的量。

  • 分类:

    • 直接常量(一个固定值)

      1.整型常量:16,28L
      2.浮点常量:3.14,4.25f,8.997m
      3.字符常量:'a','0'
      4.字符串常量:"abc","HelloWorld"
      5.布尔常量:true,false
      
    • 符号常量

      //定义语法:常量名全大写
      //const 数据类型 常量名 = 常量值
      const float PI = 3.14;
                                                                                                                      
      /*注意:
      1.const是定义常量的关键字
      2.常量名推荐全部大写
      3.常量一旦赋值,不可修改
      4.常量的赋值只能适用常量和常数,不能使用变量
      */
      
变量
  • 概念:在程序运行过程中其值可以不断改变的量。

  • 变量名:

    • 只能使用数字、字母、下划线组成,且数字不能开头
    • 不能使用关键字
    • 严格区分大小写
    • 如果使用关键字作为变量名,开头需加@
  • 变量的定义

    //语法:
    //数据类型 变量名[ = 值];
    //可以再定义变量时直接赋值,也可以后期赋值。
    int a = 13;
    int b;
    b = 3+5;
    
  • 变量的作用域(定义变量的适用范围)

    • 成员变量:在类体中定义的变量称为成员变量,在整个类体中都能用。
    • 局部变量:在类的方法中定义的变量,只能在方法内部使用。
运算符与表达式
  1. 算数运算符

    符号 意义 示例 结果
    + 加法运算 12+34 46
    - 减法运算 88-23 65
    * 乘法运算 3*2 6
    / 除法运算
    (运算符左右都为整型,做整除运算)
    10/3.0 3.33333
    % 取余 10%3 1
  2. 自增与自减运算符

    • 自增运算(++)使操作数的值加1

    • 自减运算(–)使操作数的值减1

      int i = 1;
      i++;
      Console.Writeline(i);       //i=2
      i--
      Console.Writeline(i);       //i=1
      
    • 位置规则:

      • 前置形式:先进行自增或自减再进行运算

      • 后置形式:先进行运算再进行自增或自减

          int a = 5, b, c;
          b = a++;
          Console.WriteLine(a);      //a=6    b=5
          c = ++a;                 //c=7
          Console.WriteLine(a);   //a=7
          Console.WriteLine(b);   //b=5
          Console.WriteLine(c);   //c=7
        
  3. 字符串运算符

    1. +:拼接字符串,合并成新字符串。

       String a = "123";
       int b = 465;
       Console.WriteLine(a + b);  //123456
      
  4. 赋值运算符

    /*变量名 = 值/表达式
    =:赋值运算符,将等号右边的值赋值给等号左边的变量或者常量*/
                            
    string a;
    a = "Hello World";
    int i;
    i = (int)12.3;
    
    
    
    
    
    **赋值复合运算符**
    
    | 符号   | 意义         | 示例                          |
    | ------ | ------------ | ----------------------------- |
    | **+=** | **加赋值**   | **a+=b  等同于 a=a+b**        |
    | **-=** | **减赋值**   | **a-=b  等同于  a=a-b**       |
    | ***=** | **乘赋值**   | **a'**='b  等同于  a=a*'*'b** |
    | **/=** | **除赋值**   | **a/=b  等同于  a=a/b**       |
    | **%=** | **取模赋值** | **a%=b  等同于  a=a%b**       |
    | <<=    | 左移赋值     | a<<=b  等同于  a=a<<b         |
    | >>=    | 右移赋值     | a>>=b  等同于  a=a>>b         |
    | &=     | 与赋值       | a&=b  等同于  a=a&b           |
    | ^=     | 异或赋值     | a^=b  等同于  a=a^b           |
    | \|=    | 或赋值       | a\|=b  等同于  a=a\|b         |
    
    
  5. 关系运算符

    概念:比较两个运算数的关系,结果为true和false

    符号 意义
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    == 等于
    != 不等于
  6. 逻辑运算符

    符号 意义 示例
    逻辑非(取反) !(2<3)------>false
    && 逻辑与(同时为真结果为真,否则为假) 3>2 && 5<7 ------->true
    || 逻辑或(有一个为真最终结果即为真) 8<9 || 9=10 ------->true
    //闰年的判断:闰年年份可以被4整除并且不能被100整除,或者能被400整除
    year%4==0    //能被4整除
    year%100!=0    //不能被100整除
    year%400==0    //能被400整除
    year%4==0 && year%100!=0 || year%400==0
    
    
  7. 条件运算符|三目运算符|三元表达式|行状判断语句

    格式:表达式1?表达式2:表达式3

    逻辑:表达式结果为真,执行表达式2,为假执行表达式3.

    int a,b,c;
    a = 16;
    b = 19;
    a>b?c=a?c=b;
    
  8. 运算符优先级

    运算符类别 运算符 优先级
    单目运算 ++、–、! 1
    算数运算符 *、/、% 2
    +、- 3
    关系运算符 >、>=、<、<= 4
    ==、!= 5
    逻辑运算符 && 6
    || 7
    条件运算符 ?: 8
    赋值运算 = 9
控制结构
顺序结构
  1. 输入语句:

    Console.Read();         //返回用户从控制台上输入数据的首字符的ASCII码
    Console.ReadLine();		//将用户输入的一行信息用string类型的字符串返回
    
  2. 输出语句:

    Console.WriteLine();	//输出后自动换行
    Console.Write();		//输出后不换行
    
分支结构
  1. 单分支

    /*语法:if(判断表达式){
    	代码块
    }*/
    
    //输入一个年龄,判断是否成年
     Console.Write("请输入年龄:");
     int age = int.Parse(Console.ReadLine());
     if (age >= 18) {
         Console.WriteLine("成年");
     }
    
     Console.ReadKey();
    
  2. 双分支

    /*语法:
    if(判断表达式){
    	代码块1
    }else{
    	代码块2
    }
    */
    
    //输入一个年龄,判断是否成年
    Console.Write("请输入年龄:");
    int age = int.Parse(Console.ReadLine());
    if (age >= 18)
    {
        Console.WriteLine("成年");
    }
    else {
        Console.WriteLine("未成年");
    }
    
    Console.ReadKey();
    
  3. 多分支1

    /*
    if(判断表达式1){
    	代码块1
    }else if(判断表达式2){
    	代码块2
    }...else{
    	代码块N
    }
    */
    //输入一个年龄,如果年龄在0~18岁为儿童,19~60成年人,60以上为老人
     Console.Write("请输入年龄:");
     int age = int.Parse(Console.ReadLine());
     if (age >= 0 && age <= 18)
     {
         Console.WriteLine("儿童");
     }
     else if (age > 18 && age <= 60)
     {
         Console.WriteLine("成人");
     }
     else if (age > 60)
     {
         Console.WriteLine("老人");
     }
     else {
         Console.WriteLine("输入有误");
     }
    
     Console.ReadKey();
    
    
  4. 多分支结构2

    /*
    语法:switch(表达式){
    	case 常量表达式1:语句1;break;
    	case 常量表达式2:语句2;break;
    	...
    	default:语句n;break;
    }
    */
                                                                         
    //输入学生成绩,判断改成绩处于哪个阶段,100以上为满分,90以上为优,80分以上为良好,60以上为及格,否则为不及格。
            Console.Write("请输入成绩:");
            int score = int.Parse(Console.ReadLine());
                                                                         
            switch (score/10) {
                case 10:
                    Console.WriteLine("满分");
                    break;
                case 9:
                    Console.WriteLine("优秀");
                    break;
                case 8:
                    Console.WriteLine("良好");
                    break;
                case 7:								//case 7中没有break语句,程序不会跳出												   结构,直接转入下一个分支
                case 6:
                    Console.WriteLine("及格");                                         
                    break;
                default:
                    Console.WriteLine("不及格");
                    break;
            }
                                                                         
        Console.ReadKey();
    }
    

    总结:

    1. if判断后的表达式结果为布尔类型,switch判断后的表达式为整型。
    2. 分支结构只会执行一个分支
    3. switch…case语句中不加break,程序不会跳出判断结构。、
    4. 多分支结构中注意判断条件的顺序。
循环结构
  1. for循环

    /*语法:
    for(循环变量初始化;判断语句;循环变量的更新){
    	循环体
    }
    执行顺序:
    1.初始化循环变量
    2.判断循环条件是否满足
    3.满足		不满足
    4.执行循环体   跳出循环
    5.更新循环变量
    6.判断循环条件是否满足
    ....
    */
    for(int i=0;i<=10;i++){
        Console.WriteLine(i);
    }
    
    /*注意:
    1.for循环中三个表达式都可以省略,分号不可以省略
    2.如果在循环结构中省略变量初始化,那么需要将变量初始化放在循环结构前边,否则报错
    3.如果在循环结构中省略判断条件,那么会陷入死循环,无法自动中止。
    4.如果在循环结构中省略变量更新,也会陷入死循环。
    5.如果循环结构中的所有表达式都省略,也会陷入死循环。
    */
    //打印1~100之间所有的奇数
      //1~100所有数字找到
      for (int i = 1; i <= 100; i++)
      {
          //判断当前的数字是否为奇数?
          if (i % 2 == 0)
          {
              Console.WriteLine(i);
          }
      }
    
    //计算10的阶乘			1*2*3*4*5*6*7*8*9*10
    //计算1~100之间所有的奇数之和?     1+3+5+7+9...
    
  2. while循环

    /*语法:
    while(循环条件){
    	循环体
    }
    执行逻辑:循环条件为真执行循环体,循环条件为假不执行循环体(先判断后执行)
    */
    //使用while实现登录系统,重新输入账户密码操作
       //登陆系统
       string user="root&