2018.09.10c#回顾_笔记

本文档回顾了C#的基础概念,包括计算机内存管理、数据类型、运算符等内容,并通过Unity实例介绍了验证码系统的实现方法。

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();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值