2018.09.10c#回顾_Day1_zhao
知识点回顾
1.计算机内存
1.栈:存储值类型的值,所有方法和变量都在栈中 程序运行在栈中
2.堆:存储引用类型 数组 字符串 class等
3.全局: 全局的量
4.代码:存放代码
2.
c#会形成一个称谓IL的中间语言,这个中间语言会在学习热更新的时候用到
3.
unity常用类型(查看字符大小 sizeof())
1. int 4
2. string
3. float 4
4. bool 1
5. class
6. char 2
7. double 8
8. Enum 枚举类型 常用于unity 状态机
9. 只要是在int类型表示范围之内 统统用int -2147483648~2147483647
4.运算符(二进制)
^ | & 位运算符
^: 异或 相同为0 不同为1
|:或 同0得0
&:与 同1得1
# 5.
++i i++ 在赋值号存在的情况下, 没有赋值号 ++i i++ 都是自增
i++ 先赋值在自增
++i 先自增,在赋值
int i = 10;
int j = 10;
// i++; // 自增 在原有基础上+1
// ++i;
// Console.WriteLine(i);
//
j = ++i;
j = i++;
j = j++; // j 不变
j = ++j;
Console.WriteLine(j);
// Console.WriteLine(i);
6.三目运算符
x = (bool)?number1:number2
当bool为真 x = number1
当bool为假 x = number2
7.foreach
foreach本质是迭代器,迭代器本身就是不能进行修改的 所以foreach不能修改数组 想修改只能用for
8.数组:相同数据类型的组合
数组的特性:
1.数组长度固定 ,在使用过程中必须固定大小
2.数组是引用类型
3.数组索引值从0开始
4.遍历数组使用foreach or for
5. 修改数组用for
//模仿网页登录的验证码系统 要求6位,必须包含大写/小写/数字 用户输入的时候不区分大小写
namespace _5
{
class Program
{
static void Main(string[] args)
{
//定义数组
Random random = new Random();
//bool数组的运用(第一位)0-->数字,(第二位)1-->大写,(第三位)2-->小写
bool[] isHave = {true,true,true};
Char[] randomVerCode = new char[6];
//将isHave数组初始化
Start:
for (int i = 0; i < isHave.Length; i++)
{
isHave[i] = true;
}
//开始对每一个值进行赋值判断
for (int i = 0; i < randomVerCode.Length; i++)
{
//产生0,1,2对应isHave数组的索引值
int indexnum = random.Next(0,3);
switch (indexnum)
{
//ASCII码
// 48 ~57 0
//65 ~90 A
// 97 ~122 a
case 0:
//给randomVerCode数组第一个位置加入数字
randomVerCode[i] = (char)random.Next(48,58);
if (isHave[indexnum])
{
//并将其对应的isHave数组第一个值 变为false
//说明randomVerCode数组中已经有了数字
//一下同理
isHave[indexnum] = false;
}
break;
case 1:
randomVerCode[i] = (char)random.Next(65,91);
if (isHave[indexnum])
{
isHave[indexnum] = false;
}
break;
case 2:
randomVerCode[i] = (char)random.Next(97,123);
if (isHave[indexnum])
{
isHave[indexnum] = false;
}
break;
default:
break;
}
}
//通过对isHave数组中的三个值进行判断 randomVerCode数组中的值都包含了:数字,大写,小写
//若有一个不包含(即为true没有被改为false,就是没有进入过的所有case中)
if (isHave[0]||isHave[1]||isHave[2])
{
//返回开始重新生成验证码
goto Start;
}
//都包含后 遍历查看数组
foreach (var item in randomVerCode)
{
Console.Write(item);
}
//用户输入判断
Inputadd:
Console.WriteLine("请输入验证码:");
string userInput = Console.ReadLine();
//判断是否为6个字符
if (userInput.Length!=6)
{
return;
}
//以此判断每一个字符
for (int i = 0; i < randomVerCode.Length; i++)
{
//改成同一格式(ToUpper OR ToLower)
if (char.ToUpper(randomVerCode[i])!=char.ToUpper(userInput[i]))
{
Console.WriteLine("输入错误!");
//返回重新判断
goto Inputadd;
}
}
Console.WriteLine("输入正确!");
Console.ReadKey();
}
}
}