【C#学习2】枚举、结构体、数组等

流程控制

根据程序中当时的环境执行不同的代码,或者需要重复执行某段代码

  • 分支:有条件的执行代码
  • 循环:重复执行相同的代码

布尔运算符

在这里插入图片描述
在这里插入图片描述

 Console.WriteLine(true ^ false); //异或,只有两个互不相同才返回true

goto语句

在程序中我们可以给代码加上标签,这样就可以使用goto语句直接调到标签的地方去执行
goto语句的语法 goto< labelName>;
标签定义 < labelName>;

int myInteger = 5;
goto mylabel; //goto语句用来控制程序跳转到某个标签的位置
myInteger++;
mylabel: Console.WriteLine(myInteger); //标签+:,跳转的位置

三元运算符

语法 < test>?< resultTrue> : < resultFalse>

< test>为布尔表达式(返回true或false),若为true则输出< resultTrue>;反之输出 < resultFalse>

循环的中断

  • continue:结束这次循环,continue之后的语句不执行,然后判断条件进行下一次循环
  • break:直接结束这个循环
  • goto:跳转到循环外的标记
  • return 用来终止方法,表示方法运行结束,剩余的代码不执行(直接跳出方法)
while(true)
{
	int num = Convert.ToInt32(Console.ReadLine());
	if(num == 0)
	{
		//continue;
		//break;
		//goto mylabel;
		//return;
	}
	mylabel:
	Console.ReadKey();
}

类型转换

  • 隐式转换:编译器自动识别,不需要我们写更多的代码
  • 显式转换:需要我们告诉编译器,什么类型转换成什么类型。也可以使用Convert命令进行显示转换
    在这里插入图片描述
byte myByte = 111;
int myInt = myByte; //把一个小类型的数据赋值给一个大类型的变量时,编译器会自动进行类型的转换
myByte = (byte)myInt; //反之把一个大类型的数据赋值给一个小类型的变量时,需要进行显式转换(强制转换)

string str1 = Convert.ToString(123);
string str2 = 123 + ""; //也可以直接加上一个空的字符串

复杂的变量类型

除了简单的变量类型之外,C#还提供了3个复杂的变量:枚举、结构(体)和数组

枚举

枚举类型中的每一个值,其实都是一个整数,默认为int类型。默认情况下枚举类型中的值从0开始,不过我们可以在定义的时候使用“=”改变其序列

enum GameState :byte //修改该枚举类型的存储类型,默认是int
    {   //默认是从0,1,2....
        Pause =2, //修改后,后面的值索引会接着顺下去2,3,4.....
        Failed,
        Success,
        Start=199 //也可以自己规定索引
    }
    class Program
    {
        static void Main(string[] args)
        {
            //利用定义好的枚举类型 声明变量,并赋值
            GameState state =GameState.Start;
            if (state ==GameState.Start)
            {
                int num = (int)state; //显式转换

                Console.WriteLine(num);
                Console.WriteLine(state);
            }
            Console.ReadKey();
        }
    }
}

结构(体)

namespace _006_结构体
{
    enum Direction
    {
        North,
        South,
        West,
        East
    }
    //一个结构体内包含若干变量,每个变量都是结构体的成员
    struct Path
    {
        public float distance;
        public Direction dir;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Path path1; //结构体对象声明
            path1.dir = Direction.North;  //通过 . +属性名来访问结构体中的变量
            path1.distance = 1000;
        }
    }
}

结构函数

我们可以在结构体中定义一个函数方法,这个函数就可以通过结构体声明的变量来调用,当带有参数的时候调用的时候必须传递参数。

namespace _007_结构函数
{
    struct Vector3
    {
        public float x;
        public float y;
        public float z;
        public double Distance()
        {
            return Math.Sqrt(Math.Pow(x,2) + Math.Pow(y, 2) + Math.Pow(z, 2));
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Vector3 myVector3;
            myVector3.x = 3;
            myVector3.y = 3;
            myVector3.z = 3;
            Console.WriteLine(myVector3.Distance());
            Console.ReadKey();
        }
    }
}

数组

数组是一个变量的索引列表,这个索引是一个整数,第一个条目的索引是0,第二个是1,以此类推…

数组的初始化

int[] scores = {34,51,99}; //第一种方式

int[] scores;//第二种方式
scores = new int[10];  //每个元素按照类型的默认值赋值(0)

int[] scores = new int[3]{1,26,75}; //第三种方式
string[] names = new string[]{"jojo","欧拉欧拉","木大木大"}; //第四种方式,可以不指定长度

参数数组

调用参数数组的函数的时候,我们可以传递过来任意多个参数,然后编译器会帮我们自动拼成一个数组,帮我们减少了一个创建数组的过程

class Program
    {
        static void Main(string[] args)
        {
        	int num = Plus(12, 45, 7, 9, 358, 135, 64);
            Console.WriteLine(num);
            Console.ReadKey();
        }
        static int Plus(params int[] array) //参数数组
        {
            int sum = 0;
            for (int i = 0; i < array.Length; i++)
            {
                sum += array[i];
            }
            return sum;
        }
    }

数组的遍历

for、while、foreach

foreach(int temp in array)
{
	Console.WriteLine(temp);
}

字符串的处理

string res = str.ToLower(); //把字符串转化为小写
string res = str.ToUpper(); //把字符串转化为大写
string res = str.Trim(); //去掉字符串前面和后面的空格
string res = str.TrimStart(); //去掉字符串前面的空格
string res =str.TrimEnd(); //去掉后面的空格
string[] strArray = str.Split("."); //按照指定的字符进行拆分,得到一个拆分后的字符串数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值