前面学习了C#和.NET渊源、U3D中创建C#脚本,介绍了C#中的变量,下面继续进行C#的学习。
1:一元运算符
有两个常用运算符,分别是++(递增)和- -(递减),他们还有位置的区别
int a=3;
int b=a++;
此时输出结果a为4,b为3
++在变量之后,则运算符在赋值后执行,称为后缀运算符。
int a=3;
int b=++a;
此时输出结果为a=4,b=4
++在变量之前,则运算符在赋值前执行,称为前缀运算符。
2:二元运算符
+,-,*,/运算符
%:取模运算符,B%A后,取得的小数部分,比如A=10,B=20,则B%A=0;
3:赋值运算符
赋值运算符
= 简单赋值运算符,将右边的数赋值给左边
+=,加且赋值运算符,将右边的数加上左边的数,然后赋值给左边
-=,*=,/=,%=,同理如上。
<<=:左移且赋值运算符(乘以2的多少次),>>=:右移且赋值运算符(除以2的多少次方);
4:关系运算符
==:检查两个操作数的值是否相等,如果相等则条件为真。
!=:检查两个操作数的值是否相等,如果不相等则为真。
<、>、<=、>=,同理
5:逻辑运算符
&&:与门,同时满足才为真。
||:或门,有一个真即为真。
!:非门,真→假;加→真。
6:位运算符(在二进制层面对数字进行逻辑运算)
&:与运算符
|:或运算符
^:异或运算符
~:取反运算符
int a=10;
int b=6;
Debug.Log(a&b);
Debug.Log(a|b);
Debug.Log(a^b);
10的二进制数为0001 0010
6的二进制 为0000 0110;
进行&操作时:将对应位置的0和1做&逻辑,即相同为该数,不同为0
对应数:0000 0010 转化为数字2
进行|操作时:将对应位置0和1做|逻辑,即有一个1为1,两个均为0为0
对应数:0001 0110 转化为数字14
进行^操作时:将对应位置0和1做^逻辑,上下两行不一样,返回1,如果相同则返回0.
对应数:0001 0100 转化为数字12
7:三目运算符(条件运算符,它是唯一有3个操作数的运算符,所以有时又称为三元运算符)
如果a>b则返回a,否则返回b
a>b ? a : b
int a,b,c;
a=7;
b=6;
c=(a>b)?a:b;
则返回c=7
1:if语句
if语句通过计算布尔表达式来确定要执行哪个分支,如果为true,则执行If语句块,否则执行else语句块,if语句可以嵌套。
if (expression1)
{}
else if(expression2)
{}
else if(expression3)
{}
else
{}
2:switch语句
switch (value)
case 1:
Debug.Log("1.起床");
break;
case 2:
Debug.Log("2.洗漱");
break;
case 3:
Debug.Log("3.吃饭");
break;
default:
Debug.Log("不知道要做什么");
break;
在switch括号中输入变量,case则可对每个变量的值进行分类讨论。
1:while循环
while循环语句会对布尔表达式求值,并在布尔表达式为true时继续循环。
int a= 0;
while (a<10)
{
Debug.Log(a);
a++;
}
则输出的值为0,1,2,3,4,5,6,7,8,9.
2:do循环语句
do循环语句与while语句类似,只不过布尔表达式是在语句块的底部,而不是顶部进行检查,这意味着语句块总是至少执行一次。
do
{
Write("Enter Your Password");
Passwprd=ReadLine();
}
while("Password != Pa$$word");
WriteLine("Correct!");
此代码下,无论如何,do内代码都会被首先执行一次,再判断while语句的正确性,直到输入正确的password。
3:for循环语句
for循环语句通常与计数器一起使用;
for(int a=1; a<=10; a++)
{
WriteLine(a);
}
for (int i = 0; i <= 100; i++)
if(i==50)
continue;
Debug.Log(i);,//则输出结果中没有50;
Continue 跳过 需求:如果值=50,跳过,但是循环体继续执行
Break 打断 需求:如果值=51,终止循环语句
4:foreach语句(C# 独有的遍历方式)
foreach语句用于对序列(数组或集合)中的每一项执行语句块,序列中的每一项通常是只读的,因此foreach循环也叫做只读循环,如果在循环期间修改序列结构,如添加或删除项,会报错。
foreach(数据类型 变量 in 数组或集合名)
{
循环体
}
string[] names={"a","ab","abc"};
foreach (string name in names)
{
WriteLine("{name} has {name.Length} characters.")
}
1:一维数组
数组必须先定义,后使用。且只能逐个引用数组元素,不能一次引用整个数组。
初始化的几种方式
第①种
int[]array3=new int[4]; //声明为int类型的数组,名称为array3,初始化容量为5
array[0]=10;
array[1]=20;
array[2]=30;
array[3]=40;
第②种
int[]array2=new int[4]{10,20,30,40};
第③种
int[]array1={10,20,30,40};
2:二维数组
初始化的几种方式:
第①种
int[,]array5=new int[2,2];
array5[0,0]=0;
array5[0,1]=1;
array5[1,0]=2;
array5[1,1]=3;
Debug.Log("第一行第二列的元素"+array5[0,1]);
第②种
int[,]array8=new int[2,2];
{
{10,20},
{30,40},
};
③:调用指令
Debug.Log("代码的长度(容量)"+array8.Length);
Debug.Log("代码的行数"+array8.Get.Length(0));
Debug.Log("代码的列数"+array8.Get.Length(1));
3:三维数组使用+存储和读取数据;
三维数组可以理解为层+行+列。
int[,,]array10=new int[3,3,3]; //x,y,z
array10[0,0,0]=1;
array10[0,1,0]=2;
array10[0,2,0]=3;
array10[1,0,0]=4;
array10[1,1,0]=5;
array10[1,2,0]=6;
array10[2,0,0]=7;
array10[2,1,0]=8;
array10[2,2,0]=9;
array10[0,0,1]=11;
array10[0,1,1]=21;
array10[0,2,1]=31;
array10[1,0,1]=41;
array10[1,1,1]=51;
array10[1,2,1]=61;
array10[2,0,1]=71;
array10[2,1,1]=81;
array10[2,2,1]=91;
array10[0,0,2]=310;
array10[0,1,2]=320;
array10[0,2,2]=330;
array10[1,0,2]=340;
array10[1,1,2]=350;
array10[1,2,2]=360;
array10[2,0,2]=370;
array10[2,1,2]=380;
array10[2,2,2]=390;
Debug.Log("访问第二层第一行第二列的元素(1,2,1):"+array10[1,2,1]);
Debug.Log("获取array10的数组长度(容量)"+array10.Length);
array10[2,2,1]=910;//修改数据
Debug.Log("访问第二层第二行第二列的元素(2,2,1):"+array10[2,2,1]);
1:隐式和显式地转换数值
①将int变量隐式转换为double变量是安全的,不会丢失任何信息,但是不能隐式的将double变量转为int变量,这是不安全的。
//隐式将int转为double
int a=10;
double b=a;
//不能隐式将double转为int,此处会丢失精度
double c=9.8;
int d=c;
②使用System.Convert类型进行转换
double a=9.8;
int b=ToInt32(a);
//此处输出的b是10
系统默认的圆整规则是当>=0.5,向上取整;如果<0.5则向下取整,当然也可以使用Round方法进行控制圆整规则。
③:从任何类型转换为字符串
这是最常见的转换,因此所有类型都提供转换为ToString的方法
int a=10;
Debug.Log(a.ToString());
int boolean=true;
Debug.Log(boolean.ToString());
DateTime now=DateTime.Now;
Debug.Log(now.ToString());
object me=new object();
Debug.Log(me.ToString());
④:将字符串转换为数值或日期事件
这是另一种常用的转换,作用与ToString相反,它叫Parse,只有少数类型有Parse方法,它包含所有的数值类型和DateTime。
Int num01 =int.Parse(strNumber);
DateTime birthday =DateTime.Parse(strNumber)
Float num02= float.Parse(strNumber);