C#基础语法一文通(二)

VS注释:CTRL+K CTRL+C;(不知道设计者怎么想的,笨死了)

VS取消注释:CTRL+K CTRL+U;(笨死)

VS代码整理:CTRL+A CTRL+K CTRL+F;(笨死)

PS:最终无法忍受换了VS code😂😂😂😂😂

1. if语句

                    if (条件1)
            {
                执行1
            }
            else if(条件2
            {
                执行2
            }else
            {
                其他执行;
            }

      

如果执行语句只有一句,还可以简写:

                    if(条件1) 执行1(仅一句);
            else if(条件2)执行2(仅一句);
            else (条件3)其他执行;

      

2. switch语句

        switch (op) {
                case "+":
                    op = "a+b";
                    break;
                case "-":
                    op = "a-b";
                    break;
                case "*":
                case "×":
                    op = "a*b";
                    break;
                default:
                    op = "";
                    break;
            }

      

switch变量可以是整形’字符串‘布尔’char‘枚举或可以为null的类型,不能是其他的

case 只能判断定值;

每个case 必须break,包括default;

多个case执行相同语句可以缩写;

3.while语句

        while (true) {
                
                break;//continue;return;break加等跳转语句;

            };

      

4.for循环

                    for (int i = 0; i < 10; i++) {
                执行语句;
            }
      

4.1 foreach遍历函数

        foreach (int i in arr){

}

      

4.2 string的一些方法

                    string str = "我叫安妮";
            Console.WriteLine(str.IndexOf("安"));
            str.StartsWith("我");//判断开头字符,返回布尔;
            string[] arr;
            arr = str.Split("叫");//以某个字符切割字符串返回字符串组;
            str = str.Insert(2, "小");//在第2个之前插入字符;
            Console.WriteLine(str);
            str = str.Replace("小", "大");//用新字符替换旧字符;
            Console.WriteLine(str);
            str = str.Remove(2, 1);//从第二个开始移除一个
            Console.WriteLine(str);
            str = str.Remove(2);//从第2个开始移除以后的
            Console.WriteLine(str);

      

5. 方法(函数)结构

私有 静态 返回值 方法名(形参){

逻辑语句;

return 返回值;//如果是void的返回,只能写return(可不写),不能return任何东西;

}

        private static int getWeekByDay(int year, int month, int day)
        {
            DateTime dt = new DateTime(year, month, day);
            return (int)dt.DayOfWeek;
        }

      

6. 方法(函数)的重载

方法名相同,返回值相同,但参数不同的方法们会被视为不同的方法,调用时传入不同的参数就可以实现方法的重载

例子:

                private static long CountSec(int min) {
            return min * 60;
        }
        private static long CountSec(int hour,int min)
        {
            return hour*CountSec(60)+min * 60;
        }
        private static long CountSec(int day,int hour, int min)
        {
            return day* CountSec(24,0) + hour * CountSec(60) + min * 60;
        }

      

7.递归

递归优点:逻辑简单化

递归缺点:谨防堆栈溢出,性能差

例:递归算阶乘 :5*4*3*2*1

        s3*2*1tatic void Main(string[] args)
        {
            Console.WriteLine (DiGui(5));
        }
private static int DiGui(int num) {
            if (num == 1) return 1;
            return num * DiGui(num - 1);
        }

      

8.数组

数组必须是同一种数据类型

数组的写法:

①声明、初始化、赋值

                    int[] a;//声明数组
            a = new int[3];//初始化数组
            a[2] = 2;//数组赋值

      

②初始化加赋值

        int[] arr = new int[5] { 1,2,3,4,5};

      

③ 声明+初始化+赋值

        int[] arr = { 1,2,3,4,5};

      

④匿名数组

        GetMax(new int[] {12,53,64,77,88 })

      

9. var 推断类型

根据所赋值数据推断出类型

10. 声明父类类型 赋值子类对象

例:声明父类,传参传任意子类都可以。

        private static void fun1(Array arr) {
            执行语句;
        }

      

11.随机数

static Random random = new Random();//此句写在方法外,类里面。

random.Next(1, 34);//含头不含尾;

12.数组方法

①获取数组长度

数组名.Length

②清除元素

注意!!!清除不是删除,清除只是将值清除为默认值!!!!

Array.Clear(数组, 起始位置, 清除长度);

例:Array.Clear(arr, 2, 4);

③数组复制元素

(1)Array.Copy(源数组,源数组开始index,目标数组,目标数组开始index,复制长度);

                    int[] arr = { 1, 4, 2, 6, 7, 9 };
            int[] arr2 = { 0, 0, 0, 0, 0, 0 };
            Array.Copy(arr,2,arr2,2,3);

      

(2)Array.Copy(源数组,目标数组,,复制长度);//从第一个开始赋复制

④数组复制

源数组.CopyTo(目标数组,目标数组开始index);

arr.CopyTo(arr2,0);

⑤数组克隆

arr2=(int[])arr.Clone();//因为Clone返回的是Object类型;

⑥查找元素

Array.IndexOf (数组,元素) //返回元素index 如果没有此元素,返回-1;

Array.IndexOf (arr,6)

Array.LastIndexOf (arr,2)

⑦数组排序

Array.Sort (arr);//无返回值

⑧ 数组反转

Array.Reverse (arr);

13.二维数组

int[,] a=new int[5,3];

也可以:

int[,] arr={
{1,2,3},
{4,5,6}
};

①二维数组也可以遍历

        foreach(int each in arr){
 Console.WriteLine (each);
            }

      

② 获取数组行列数

        
          Console
          .
          WriteLine
          (
          arr
          .
          GetLength
          (
          0
          ));
          //行数

          
          Console
          .
          WriteLine
          (
          arr
          .
          GetLength
          (
          1
          ));
          //列数

        
      

14. 交错数组

                    int[][] arr;
            arr=new int[4][];
            arr[0]=new int[]{1,2,3};
            arr[1]=new int[]{4,5};
            arr[2]=new int[]{6};
            arr[3]=new int[]{7,8,9,10};
            arr[4]=new int[]{11,12};

      

交错数组的每个元素是一个数组

②交错数组也可以用foreach遍历 //双重遍历;

                    int[][] arr;
            arr=new int[4][];
            arr[0]=new int[]{1,2,3};
            arr[1]=new int[]{4,5};
            arr[2]=new int[]{6};
            arr[3]=new int[]{7,8,9,10};
            arr[0][0]=6;
            foreach(int[] eachArr in arr){
                foreach(int each in eachArr){
                    Console.Write(each+"\t");
                }
                Console.WriteLine();
            }

      

注意!!!交错数组的每个元素是一个数组 所以for循环应该

        for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr[i].Length; j++)
                {
                    Console.Write(arr[i][j] + "\t");
                }
                Console.WriteLine();
            }

      

15. 参数数组

当参数类型确定但数量不确定时,用数组比较合适 由此引出:参数数组

参数数组写法:

private static int Sum(params int[] arr){}

传参时可以:

sum();

Sum(new int[]{1,2,3});

Sum(1,2,3);

参数数组特点总结:

①对方法内部而言,参数数组只是一个普通数组;

②对外部而言,可以 1.传递数组 2.传递变量合计 3.不传参

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值