Unity代码基础第一天之“C#的初级编程”

本文介绍了C#编程的基础知识,包括命名空间、程序结构、标识符命名规则、命名规范(CamelCase和PascalCase)、语句和块的概念。此外,还讲解了枚举、结构体、委托、变量定义、类型转换、控制流语句(如if、for、while)、字符串处理、数组操作以及函数的使用。内容深入浅出,适合初学者学习。
摘要由CSDN通过智能技术生成
//一、引入命名空间
using System;//告诉编译器使用System命名空间里的类型,比如:Console.WriteLine
using System.Text;//没有用到会显示灰色

//二、程序的4个结构
//1.定义命名空间namespace xx{};
//2.定义的类class xx{};
//3.定义一个叫Main的方法,一个C#可执行只有一个Main函数且必须执行,作为程序入口参数是一个字符串(string[] args),
//4.方法体

//三、关于标示符的命名(标示符是一种字符串,用来命名如变量 方法 参数)
//1.不能以数字为开头
//2.字母、下划线可以放任意位置
//3.@字符只能放首位
//4.标识符不能和关键字重复

//四、2种C#的命名规则
//1.Camel命名法(小驼峰命名)
//首个单词的首字母小写,其余单词的首字母大写(enemyHp)
//2.Pascal命名规范
//2_1.每个单词的第一个字母都大写(EnemyHp)(大驼峰命名)
//2_2.如果使用到英文单词的缩写,全部使用大写(PI HP MP)

//五、C#命名注意
//1.变量使用Camel命名,方法和类使用Pascal命名规范
//2.关键字比如:false、new、null不能被用来做变量名或者其他形式的标识符,除非以@字符开始(后续出一章写个图表)
//3.所有C#关键字全部由小写字母组成,所以C#的命名规则一定要使用,避免冲突

//六、什么是语句?什么块?
//1.以分号结束的就是语句
//2.由大括号包围起来的,就是块

namespace 学习C_的初级编程
{
    //枚举类型的定义
    enum WeGame {
        play,//整数类型-默认为0
        stop,//整数类型-默认为1
        hp,
        name = 101//整数类型-默认为3,赋值为101
    }

    //结构体的定义
    struct Position {
        //public float x;
        //public float y;
        //public float z;
        //public WeGame dir;//可利用枚举类型
        public string name1;
        public string name2;
        public string Ganame(){
            return name1 +""+ name2;
        }
    }

    //委托的定义delegate,不需要函数体
    public delegate double MyDele(double pat1, double pat2);
    class Program
    {
        
        static void Main(string[] args)
        {
            //七、输出文本的2种形式
            //1.Console.WriteLine("Hello World1");//会自动换行
            //2.Console.Write("Hello World1");//不会自动换行

            //八、什么是格式化输出?
            //Console.WriteLine("两个数相加{0}+{1}={2}",2,2,4);//打印显示2+2=4

            //九、什么是值?
            //Console.WriteLine("this is {1} and {0}",3,6);

            //十、什么是变量?如何定义?怎么多变量赋值?
            int numOne,numTwo = 10,numThree = 60;//变量类型int 变量名称 
            numOne = 20;//赋值
            Console.WriteLine("结果={0}+{1}+{2}",numOne,numTwo,numThree);

            //十一、关于类型的使用注意
            //1.比如你用int类型去定义年龄的话,是浪费空间的,范围值很大,其实用byte类型0-255之间的整数,是最合适的
            byte nianLin = 20;
            long longNum = 1000000102030;
            int intNum = 3000;
            Console.WriteLine("byte:{0}\nlong:{1}\nint:{2}", nianLin, longNum, intNum);
          
            //2.浮点数的类型默认是double类型,如果用float记得要加个f
            double douBle = 3.5;
            float floAt = 3.6f;
            Console.WriteLine("double:{0},float:{1}", douBle, floAt);

            //十二、15种属性类型(注意命名规则用驼峰命名,先随意定义一个单词比如:my、and、good然后去拼接一个首字母大写的变量比如:myBool )
            bool myBool = false;//布尔
            string myString = "字符串";//字符串
            char myChar = 'a';//符号
            Console.WriteLine("bool:{0},string:{1}", myBool, myString);
整数型(8):取值范围有限
byte(8位无符号),sbyte(8位有符号)例: byte a = 10; sbyte b = -100;
short(16位有符号),ushort(16位无符号)例:short c = -45;ushort d = 78;
int(32位有符号),uint(32位无符号)例: int e = 200;uint f=522;
long(64位有符号),ulong(64位无符号)例:long l = -789456;ulong=123124124124124565;
位:指代表这个类型的取值范围是2的多少次方,按F12 显示
有无符号:有符号,指正负各取一半;无符号,指只取正
浮点型(3):
双精度:double 例: double a =200.2;
单精度:float 例: float b = 200.2f;
精度:decimal 例: decimal c = 200.2m;
字符型:char
单引号中,有且只有一个字符 例: char d = ‘1’;
字符串:string
字符串本质是一个字符数组 例: string str = "范围广就发个我如今为何今日和居委会进入华为 ";
布尔型:bool
true/false 注:真假值true=1/false=0
对象型:object

            //十三、什么是转义字符(\n "" )?@符号的作用是什么?
            //1.@符号将不识别转义字符!,
            //2.会对字符串定义在多行
            //3.方便表示一个路径C:\xx\xx\xx
            Console.WriteLine("byte:\"{0}\"\nlong:{1}\nint:{2}", nianLin, longNum, intNum);

            //十四、算术运算符和注意点
            //1.加减乘除+-*/ 
            //2.比较运算符<><=>= == 
            //3.条件运算符(?:),有时也称为三元操作符“?:”
            int num6 = 20;
            int num7 = 30;
            int num8;
            num8 = num6 > num7 ? 200 : 300;//如果2大于3的话 num8=200
            Console.WriteLine(num8);
            //4.逻辑运算符 && || !
            //5.赋值运算符 +=  -=

            //1.注意:加减乘除俩边都是整数类型的话,结果是整数,如果不能被除尽,会自动省略小数部分
            int numA, numB;
            numA = 27;
            numB = 13;
            int numZ1 = numA + numB;
            int numZ2 = numA/numB;//结果会自动省略小数部分
            int numZ3 = numA * numB;
            Console.WriteLine("加法结果={0}\n除法的结果={1}\n乘法的结果={2}",numZ1, numZ2, numZ3);

            //2.注意:如果2个类型不一致的时候,默认为类型大的操作数类型
            int letNum1 = 20;
            double letNum2 = 1.2;//因为变量letNum2,类型大于int
            double letNum3 = letNum1 + letNum2;//letNum3就用double类型
            /*
            //十五、字符串类型和整数类型的转换!怎么使用用户输入的文本?
            Console.WriteLine("请输入第一个数");
            string strIng = Console.ReadLine();//用来接收用户的一行文本
            int numInt = Convert.ToInt32(strIng);//将整数的字符串转为整数
            //Console.WriteLine(numInt);
            Console.WriteLine("请输入第二个数");
            string strIngTwo = Console.ReadLine();//用来接收用户的一行文本
            double numIntTwo = Convert.ToDouble(strIngTwo);//将小数的字符串转为小数类型的整数
            //Console.WriteLine(numIntTwo);
            zhen1:Console.WriteLine("两个数的合=");
            double numThreeA = numInt + numIntTwo;
            Console.WriteLine(numThreeA);

            //十六、语句
            //1.迭代语句-遍历集合,或重复执行某一代码段直到满足指定的条件,主要有do,for,foreach,in,while
            //2.跳转语句-实现将执行的语句跳转到另一个代码段。主要有break,continue,default,goto,return,yield
            //3.选择语句-根据一个或多个指定条件,执行不同的代码段。主要有 if,if  else,switch case

            //1_1.goto跳转语句
            //代码加上标签,这样就可以使用goto,语句直接调到标签的地方去执行
            //goto zhen1;//zhen1是在你要执行的地方zhen1:这样写

            //1_2.if if else选择语句
            string pdNum1 = Console.ReadLine();
            int pdNum2 = Convert.ToInt32(pdNum1);
            if (pdNum2 == 2)
                Console.WriteLine("正确");
            else {
                Console.WriteLine("错误");
            }

            //1_3.switch case选择语句
            string pdNum3 = Console.ReadLine();
            int pdNum4 = Convert.ToInt32(pdNum3);
            switch (pdNum4) {
                case 1:
                    Console.WriteLine("条件1");
                break;

                case 2:
                    Console.WriteLine("条件2");
                break;

                default:
                    Console.WriteLine("不满足条件1和2");
                break;

            }
           
            //1_4.while迭代语句
            string pdNum3 = Console.ReadLine();
            int pdNum4 = Convert.ToInt32(pdNum3);
            while (pdNum4<9) {
                pdNum4++;
                Console.WriteLine(pdNum4);
            }
            
            //1_5.do while迭代语句
            int pdNum4 = 1;
            do
            {
                pdNum4++;
                Console.WriteLine(pdNum4);//等于2,跟while迭代语句的区别就是,会先执行1次 while语句 = 1
            } while (pdNum4 < 9);

            */

            //十七、break,continue,default,return跳转语句的使用
            //1.break结束循环
            //2.continue结束本次的循环,开始下一个循环
            //3.return 跳出循环
            int pdNum4 = 1;
            while (pdNum4<10) {
                pdNum4++;
                if (pdNum4 == 9) {
                   // break;
                }
                if (pdNum4 == 6)
                {
                    continue;
                }
                Console.WriteLine(pdNum4);
                
            }

            //十八、显示转换(强制性转换)和隐式转换
            //1.ToInt32-string字符串类型数字-转为-int类型
            //2.ToString-int float double byte转字符串string类型
            //3.ToDouble-string字符串类型数字-转为-double类型
            byte myByte = 123;
            int myInt = myByte;//小类型的数据赋值给大类型的时候,编译器会自动转换,隐式转换
            myByte = (byte)myInt;//myByte = myInt;//大类型赋值给小类型,需要进行显示转换(强制性转换)就是加个括号和数据类型
            string nameA = "显示转换";
            int nameB = 134;
            //int pdNum7 = Convert.ToInt32(nameA);
            //string pdNum8 = Convert.ToString(nameB);//int float double byte转字符串类型

            //十九、枚举类型
            //1.枚举的使用
            WeGame Hp = WeGame.hp;//枚举的赋值
            if (Hp == WeGame.hp) {
                Console.WriteLine("人物的血量");
            }

            WeGame Liuchun = WeGame.name;
            int numBa = (int)Liuchun;
            if(numBa == 101){
                Console.WriteLine("枚举类型的默认类型是int");
            }

            //2.为什么要用枚举
            //2_1.如果不用枚举,虽然也能表示,但是没有枚举来的更具体,更有含义
            int numBb = 0;
            if (numBb == 0) {
                Console.WriteLine("人物的血量");
            }

            //二十、结构和结构体-会让程序变的更清晰
            //1.什么是结构?结构体?
            //如果我们要表示一个向量的话,需定义3个类型的x,y,z,这样比较麻烦,不方便管理,我们可以使用结构定义结构
            //比如:通过3个float类型的变量来表示一个敌人的坐标
            //float enemy1X = 34;
            //float enemy1Y = 1;
            //float enemy1Z = 34;

            //float enemy2X = 34;
            //float enemy2Y = 1;
            //float enemy2Z = 34;

            //2.结构体变量的使用
            //Position enemy1Postiton;
            //enemy1Postiton.x = 34;//使用
            //Console.WriteLine(enemy1Postiton.x);

            //3.枚举类型和结构类型的一起使用
            //Position play1;//定义了一个Position类型的变量play1
            //play1.dir = WeGame.play;//在结构体类型play1里面,赋值一个枚举类型WeGame类型下的play到dir里面
            //play1.z = 100;//给机构体类型赋值

            //三十、数组
            //1.数组的三种声明方式
            //1_1.第一种,直接定义数组,并赋值
            int[] Arr = { 1, 2, 3, 4, 5, 6 };//声明数组类型 直接赋值
                                             //Debug.Log(Arr[0]);
                                             //1_2.第二种,定义数组的长度,没赋值
            int[] Arr_a = new int[6];//数组长度为6,默认值为0
                                     //Debug.Log(Arr_a[0]);
                                     //也可以这样写
            int[] Arr_b;
            Arr_b = new int[8];
            //1_3.第三种,定义数组的长度,有赋值
            int[] Arr_c = new int[4] { 1, 2, 3, 4 };
            Console.WriteLine(Arr_c[0]);

            //三十一、数组的遍历
            //1.for循环-如果不知道索引值的话,就用这个
            int[] arrNum1 = { 11, 12, 14, 16, 18, 19, 20 };
            for (int i = 0; i < arrNum1.Length; i++) {
                Console.WriteLine(arrNum1[i]);
            }
            //2.foreach循环-单纯遍历的话就用这个
            foreach (int arrNum2 in arrNum1) {
                Console.WriteLine(arrNum2);
            }

            //三十二、字符串的处理
            //1.字符串的遍历
            string arrNum3 = "我的世界啊!";
            for (int i = 0; i < arrNum3.Length; i++) {
                Console.WriteLine(arrNum3[i]);
            }
            //2.ToLower、ToUpper、Trim
            string myNum4 = "www.baidu.COM";
            string myNum5 = myNum4.ToLower();//大写转小写
            string myNum6 = myNum5.ToUpper();//小写转大写
            string myNum7 = myNum4.Trim(); //去掉字符串前后的空格
            string myNum8 = myNum5.TrimStart();
            string myNum9 = myNum5.TrimEnd();
            string[] myNum10 = myNum4.Split('.');//将字符串拆分
           
            foreach (string myNum11 in myNum10) {
                Console.WriteLine(myNum11); 
            }

            //三十三、函数
            //1.函数的定义,注意,函数不能写在函数里面,只能写类里面
            //2.return的返回值-在第二个方法里面,获取到了第一个方法的值
            int myHe2 = move(2, 3);
            Console.WriteLine(myHe2);
            //3.参数数组和数组参数
            int sumOne = Plus(23, 4, 56, 7, 888);//参数数组
            int sumTwo = Sum(new int[]{ 1,2,3,45,6});//数组参数
            Console.WriteLine(sumOne);
            //4.结构函数
            //5.注意:Position里面的所有值必须全部赋值

            Position goName;//Position里面的所有值必须全部赋值,也就是Position里面声明的2个变量name1、name2如果有多个变量,那么其他变量也要赋值,赋值了才可以执行goName.Ganame()这个,不然会报错

            goName.name1 = "小1";
            goName.name2 = "小2";
           
            Console.WriteLine("我们的名字是" + goName.Ganame());


            //三十四、函数的重加载
            //1.什么是函数的重加载?
            //函数名相同,参数不同
            int res1 = Funone(2);
            double res2 = Funone(2.6);
            Console.WriteLine(res1);
            Console.WriteLine(res2);

            //三十五、委托的使用
            MyDele de;//利用委托类型,声明了一个新的变量
            de = Mulit;//赋值
            Console.WriteLine(de(2,4));//使用
            de = Divi;
            Console.WriteLine(de(2, 4));


        }
        static double Mulit(double pat1, double pat2) {
            var res = pat1 * pat2;
            return res;
        }
        static double Divi(double pat1, double pat2)
        {
            var res = pat1/pat2;
            return res;
        }
        static int Funone(int num) {
            Console.WriteLine("int类型");
            var b = num + 20;
            return b;
        }

        static double Funone(double num)
        {
            Console.WriteLine("double类型");
            var b = num + 20;
            return b;
        }

        static int Plus(params int[] array)//参数数组
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++) {
                sum += array[i];
            }
            return sum;
        }
        static int Sum(int[] array)//数组参数
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++)
            {
                sum += array[i];
            }
            return sum;
        }
        static int move(int num1 ,int num2)//void表示空的返回值-是没有返回值的-所以要改成int类型
        {
            int myHe1 = num1 + num2;
            return myHe1;//如果不返回myHe1,用void也可以
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值