TryParse语句 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TryParse
{
    class Program
    {
        static void Main(string[] args)
        {
            int number;
            bool b = int.TryParse("123", out number);
            Console.WriteLine(b);
            Console.WriteLine(number);
            Console.ReadKey();
        }
    }
}

TryParse 类型转换 和 Convert 差不多
都是可以转换的
只不过 convert失败的话就报错
TryParse的话 失败返回 False
bool b = int.TryParse("123", out number);  

返回值是bool 类型  讲123转换成整数型 传给 number
C#程序调试:

1.写完这段程序后,想看一下这段程序的执行过程。
2.当你写完这段程序后,发现程序并没有按照你想象的样子去执行。
调试方法:

1.F11逐语句调试(单步调试)

2.F10 逐过程调试

3.断点调试
详细课程:
https://www.bilibili.com/video/BV1FJ411W7e5?p=58
continue 语句 :

contiue 和 break区别
continue 是 跳出当前循环 

break 是 跳出整个循环


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace continue循环
{
    class Program
    {
        static void Main(string[] args)
        {
            //continue 跳出当前循环
            //break 跳出整个循环
            while (true)
            {
                Console.WriteLine("Hello World");
                //break
                continue;
            }
            Console.ReadKey();
        }
    }
}

continue练习:
用while循环 和 continue 实现计算 1-100台之间的除了被7整除之外的所有整数
           
               
              int sum = 0;
            int i = 1;
           
            while (i<=100)
            {
                if (1 % 7 == 0 == true)
                {
                    i++;
                    continue;
                }
                sum = sum + i;
                i++;
            }
            Console.WriteLine(sum);
            Console.ReadKey();
三元表达式:

语法:
表达式1?表达式2:表达式3;
表达式1一般为关系表达式。
如果表达式1的值为true,那么表达式2的值就是整个三元表达式的值
如果表达式1的值为false,那么表达式3的值就是整个三元表达式的值
注意:表达式2的结果类型必须跟表达式3结果类型一致,并且也要跟整个三元表达式的结果类型一致
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 三元表达式
{
    class Program
    {
        static void Main(string[] args)
        {
            //三元表达式
            Console.WriteLine("比较两个数的大小用三元表达式");
            Console.WriteLine("请输入第一个数字");
            
            
            int number1 = Convert.ToInt32(Console.ReadLine());
            
            Console.WriteLine("请输入第二个数字");
            
            
           int number2 = Convert.ToInt32(Console.ReadLine());
            
           
            int max = number1 > number2 ? number1 : number2;
            //如果number1 > number2 那么 number1就是整个三元表达式的值
            //如果不是,那么number2就是整个三元表达式的值
            Console.WriteLine(max);
            Console.ReadKey();
        }
    }
}

//三元表达式
            //提示用户输入姓名,名字只要不是绵羊就都提示流氓,用三元表达式

            Console.WriteLine("输入姓名,让计算机分析你是不是流氓");

            string name = Console.ReadLine();

            string result = name == "绵羊" ? "淫才啊" : "流氓啊";

            //如果name等于绵羊成立,也就是第一个表达式成立,那么表达式2的值淫才就是整个三元表达式的值

            //如果name等于绵羊不成立,也就是第一个表达式不成立,那么表达式3的值流氓啊就是整个三元表达式的值
           
            Console.WriteLine(result);

            Console.ReadKey();

Random随机数:

 

                //产生随机数
                //1.创建一个能够产生随机数的对象
                Random r = new Random();
                //2.让产生随机数的这个对象,调用方法来产生随机数
                int number = r.Next(1, 10);
                Console.WriteLine(number);
                Console.ReadKey();
            

练习:这个人上辈子!!


//输入名字随机显示这个人上辈子是什么样的人
            //思路:
            //1.创建能够产生随机数的对象
            //2.产生随机数(1,7)
            Random r = new Random();
            while (true)
            {
                int rnumber = r.Next(1, 7);
                Console.WriteLine("请输入一个姓名:");
                string name = Console.ReadLine();
                switch (rnumber)
                {
                    case 1:
                        Console.WriteLine("{0},上一辈子是一坨翔",name);
                        break;
                    case 2:
                        Console.WriteLine("{0},上辈子是拉皮条的老鸨子", name);
                        break;
                    case 3:
                        Console.WriteLine("{0},上辈子是抽大烟的", name);
                        break;
                    case 4:
                        Console.WriteLine("{0},上辈子是青楼女子", name);
                        break;
                    case 5:
                        Console.WriteLine("{0},上辈子是吃翔的", name);
                        break;
                    case 7:
                        Console.WriteLine("{0},上辈子是救苦救难的大圣人啊", name);
                        break;
                }
                
            }



常量 const:

const int number = 20;  //常量最大的特点就是不能被重新赋值


枚举:

语法:
public enum 枚举名
{
    值1,
    值2,
    值3
    ......
}
public:访问修饰符。访问权限最高的,公开的公共的,哪都可以访问使用,
enum:关键字,声明枚举的关键字
枚举名:要符合pascal命名的规范
最好将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所有的类都能使用枚举


枚举就是一个变量类型,只是声明、赋值、使用方式都和其他变量不一样
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 枚举
{
    //声明了一个枚举  类型是 Gender类型
    public enum Gender
    {
        男,
        女
    }
    class Program
    {
        static void Main(string[] args)
        {
            // 变量类型 变量名 = 值;
            Gender gender = Gender.男;
        }
    }
}


枚举的练习:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 枚举的练习
{
    public enum Season
    {
        春,
        夏,
        秋,
        冬
    }
    public enum QQstate
    {
        online,
        offline,
        leave,
        busy,
        qme
    }
    class Program
    {
        static void Main(string[] args)
        {
            Season s = Season.春;
            QQstate a = QQstate.online;
        }
    }
}

我们可以将一个枚举类型的变量跟int类型和string类型互相转换

枚举类型默认是和int类型相互兼容的,所以可以通过强制类型转换的语法互相转换

当转换一个枚举中没有的值的时候,不会抛异常,而是直接将数字显示出来

枚举同样也可以跟string类型互相转换,如果将枚举类型转换成string类型,则可以调用 ToString()

如果将字符串转换成枚举类型则需要下面这样的一行代码:
    
(要转换的枚举值) Enum.Parse(typeof(要转换的枚举类型),"要转换的字符串");
如果转换的字符串是数字,则就算枚举中没有,也不会抛异常

如果要转换的字符串是文本,如果枚举中没有,则会抛异常
所有的类型都能够转换成string类型,调用ToString()


枚举练习:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 枚举和int已经string类型之间的转换
{
    public enum QQstate
    {
        online=1,//枚举默认从0开始,我们给他赋值为1
        offline,
        leave,
        busy,
        qme
    }
    class Program
    {
        static void Main(string[] args)
        {
            //枚举练习
            //提示用户选择一个在线状态,我们接受,并将油壶的输入转换成枚举类型
            //再次打印在控制台上
            Console.WriteLine("请选择您的qq在线状态 1——onlibe 2——offline  3——leave 4——busy 5——qme");
            string input = Console.ReadLine();
            switch (input)
            {
                case "1": QQstate s1 = (QQstate) Enum.Parse(typeof(QQstate),input);
                    Console.WriteLine("您选择的在线状态是{0}",s1);
                    break;
                case "2": QQstate s2 = (QQstate)Enum.Parse(typeof(QQstate), input);
                    Console.WriteLine("您选择的在线状态是{0}", s2);
                    break;
                case "3":
                    QQstate s3 = (QQstate)Enum.Parse(typeof(QQstate), input);
                    Console.WriteLine("您选择的在线状态是{0}", s3);
                    break;
                case "4":
                    QQstate s4 = (QQstate)Enum.Parse(typeof(QQstate), input);
                    Console.WriteLine("您选择的在线状态是{0}", s4);
                    break;
                case "5":
                    QQstate s5 = (QQstate)Enum.Parse(typeof(QQstate), input);
                    Console.WriteLine("您选择的在线状态是{0}", s5);
                    break;
            }
            Console.ReadKey();
        }
    }
}




C# 结构:

可以帮助我们一次性声明多个不同的变量;
语法:
    public struct 结构名
    {
        成员;//字段
    }
public 也是可以省略不写的
变量在程序运行期间只能存储一个值,而字段能存储多个值

程序员语法规范: 最好在字段前面加上   _下滑线
结构的练习:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 结构
{
    public struct Person
    {
        public string _name; //这个叫字段
        public int _age;
        public Gander _gender; //gander 定义的那个枚举类型
        //加上public 是为了增加他的访问权限
        //否则的话只能在当前页面访问 Person
    }
    //枚举一个性别
    public enum Gander
    {
        男,
        女
    }
    class Program
    {
        static void Main(string[] args)
        {
            //XX大学管理系统
            Person zsPerson;
            zsPerson._name = "张三";
            zsPerson._age = 18;
            zsPerson._gender = Gander.女;
            
            Person lsPeoson;
            lsPeoson._name = "李四";
            lsPeoson._age = 18;
            lsPeoson._gender = Gander.男;

            Console.WriteLine("姓名:{0} 年龄:{1} 性别:{2}",zsPerson._name,zsPerson._age,zsPerson._gender);
            Console.ReadKey();
        }
    }
}

练习2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 结构的练习
{
    public struct MyColor
    {
        public int _red;
        public int _green;
        public int _blue;
    }
    class Program
    {
        static void Main(string[] args)
        {
            //定义一个结构叫MyColor,有三个成员,分别定义为int类型的red,green,blue
            //声明一个MyColor类型的变量,并对其成员赋值,使Mycolor可以表示为一个红色
            MyColor mc;
            mc._red = 255;
            mc._green = 0;
            mc._blue = 0;
        }
    }
}




C#数组:

一次性储存个相同类型的变量;

语法:
数组类型[] 数组名 = new 数组类型[数组长度];
如果想要访问到数组中的某一块元素,需要通过这个元素的下标或者索引去访问。


数组的长度一旦固定了,就不能再被改变了;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 数组
{
    class Program
    {
        static void Main(string[] args)
        {
            //数组类型[] 数组名 = new 数组类型 [数组长度];
            int[] nums = new int[10];
            
            //数组的声明方式
            int[] numsTwo = {1,2,3,4,5,6};
            
            //利用循环赋值,同样也通过一个循环对数组取值
            for (int i = 0; i < nums.Length; i++)
            {
                nums[i] = i;
            }
            
        }
    }
}
数组的练习:

练习1 从一个整数中,提取这个数组的 最大的整数,最小的整数,总和和平均值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 数组的练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //练习1 从一个整数中,提取这个数组的 最大的整数,最小的整数,总和和平均值
            //声明一个int类型的数组,并且随意赋初值
            int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            //声明变量用于存储
            int max = nums[0];
            int min = nums[0];
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                if (nums[i] > max)
                {
                    max = nums[i];
                }
                if (nums[i] < min)
                {
                    min = nums[i];
                }
                sum = sum + nums[i];
            }
            Console.WriteLine("最大值是{0},最小值是{1},最大值是{2},平均值是{3}",  max, min,sum,sum/2);
            Console.ReadKey();
        }
    }
}

练习2:数组里面都是人的名字,分割成:例如:老马|老苏|老花|老贾

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 数组的练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //练习2 数组里面都是人的名字,分割成:例如:老马|老苏|老花|老贾
            //老马 老苏 老花 老贾 老刘 老虎 老鸡 老鸭
            
            string[] name = { "老马", "老苏", "老花", "老贾" };
            string str = null;
          
            for (int i = 0; i < name.Length-1; i++)
            {
                str = str+name[i] + "|";
                
            }
            Console.WriteLine("{0}", str+name[name.Length-1]);
            Console.ReadKey();
        }
    }
}