C#编写高质量代码第三天

总结:

  1. const 天然是static修饰,readonly修饰的值类型和引用类型都不可以再重新赋值,但是对于引用类型指向的实例对象可以再次赋值。
  2. 不要显示赋值给枚举对象,枚举对象默认0为初始值,保持默认就可以,因为如果需要增加枚举值时如果已经显示的复制会发生错误
  3. 枚举的使用:通过值获取枚举类型(枚举)int 强转 ,反之要等到枚举类型值(int)枚举对象

     

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PromoteDay03
{


    enum Week
    {
        Monday = 1,
        TuesDay = 2,
        Value,
        Wednesday = 3,
        ThursDay = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }

    class Program
    {
        static void Main(string[] args)
        {
            /*-----------------------------------*/
            //建议6.ReadOnly 和Const的使用方法
            /*
             1、const只能修饰基元类型(编译器可以直接支持的类型,sbyte / byte / short / ushort /int / uint / long / ulong
char / float / double / bool),枚举类型或者字符串类型,const是编译常量,天然是Static修饰
             2、对于readonly修饰的类型如果提前赋了初始值也可以重新赋值
             */
            Sample sample = new Sample(200);
            // sample.ReadOnlyValue = 100;  无法对只读对象再次赋值,值类型和引用类型都一样,但是引用类型指向的对象可以再次赋值
            Sample2 s2 = new Sample2(new Student(10));
            //  s2.Student = new Student(20); 无法对只读字段赋值 不能再指向其他实例对象
            s2.Student.Age = 10;//引用本身不可以改变,但是引用所指向的实例的值是可以改变的

            /*---------------------------------------------------------*/
            /*
             建议7.将0值作为枚举的默认值
             通过值获取枚举类型(枚举)int 强转 反之要等到枚举类型值,(int)枚举对象
             */
            //week = Week.Friday;
            //week = (Week)5;
            //Console.WriteLine(week);
            //Console.WriteLine((int)week);//没有给出类型,默认为第一个,所以就是0
            //Console.ReadKey();

            /*-----------------------------------------------------------------*/
            /*
             * 建议8:避免给枚举类型的元素提供显示的值
             
             */
            week = Week.Value;//枚举值默认叠加 weel.value的值为3
            Console.WriteLine(week);//所以输出的是Wednesday
            Console.ReadKey();
        }
        static Week week;


    }

    class Sample
    {
        public readonly int ReadOnlyValue;

        public Sample(int value)
        {
            this.ReadOnlyValue = value;
        }
    }

    class Student
    {
        public int Age { get; set; }

        public Student(int age)
        {
            this.Age = age;
        }

        public Student()
        {
        }
    }

    class Sample2
    {
        public readonly Student Student;
        public Sample2(Student student)
        {
            this.Student = student;
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值