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.不传参


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部