DOTNET笔记_Convert_CONST_ReadOnly_Enumerator

1 Type Cast类型转换

    前置条件:

    Double src = 4.5;

    Int32 target;

    转换方式:

    1) 强制转换

        target = (Int32)src;

        这种转换的工作原理是只取小数点左边的整数部分

    2) Convert.Int32

         target = Convert.ToInt32(src);

         工作原理:将浮点数舍为相应的整数,值得注意的是对于 类似 1.5,2.5这种小数点带有中值的处理是舍为最近的偶数。1.5=>2  2.5=>2  3.5=>4,而对于非中值的情况就遵循四舍五入的处理原则。值得一提的是,Convert.ToInt32 它本身可以看作是 Math.Round一个参数版本的实现,相对于强制转换,这里有针对尾数的特殊处理,可以针对应用场景进行选择使用。

    3) Math.Round

           基于相关的版本进行处理

2 Const vs ReadOnly

1) const 针对基本类型,且在申明时必须初始化,由于const默认是static类型的,因此同readonly进行对比时加上static修饰比较合理, static readonly 类型的数据可以是简单类型,也可以是引用类型 可以在声明时不初始化,而在构造函数中初始化,并且必须是静态构造函数(如果去掉static修饰符号,那么就可以在实例构造函数中进行赋值)
2)const在编译时决定的,且其值编译时就会插入到程序集的元数据中; static readonly的值可以在运行时确定
3)两者都是静态
4)对外均不可修改。
5)const修改了常量,凡是涉及引用的程序集必须重新编译,存储的常量值才能得到更新;而static readonly则不必如此

另外:成员数组在声明时创建实例,其中的Size属性必须是static类型,也就是说如果想使用static readonly修饰符修饰的变量时,那就必须在satic readonly 修饰的变量声明时初始化,给定一个有意义的长度Value。

 3 Enumerator

            默认的情况下,只有实现了IEnumerable接口的类型才能使用foreach进行遍历。

            另外有以下这些情况(以下内容有些是个人臆断):

1 Struct,Class只有实现了  public IEnumerator GetEnumerator(),就可以使用Foreach进行处理, 修饰符必须是 public, 返回值是IEnumerator,方法名称GetEnumerator
2 Foreach内部实际上就是调用不断的调用这个方法,以及设置元素的MoveNext
3 IEnumerator的MoveNext,使用使用yield return快速返回,yield return的含义是,将yield return视为Current的Object,意思是, 它本身返回一个包含实现了IEnumerator的对象的接口,通过调用该接口的Current可以范围该对象。

重要的事情需要重复:
1) 用户自定义的Struct可以实现一个或者多个接口,但是不支持 显式 的继承
2) 用户自定义的Struct不可以覆盖默认的无参构造函数,但是可以添加 有参 构造函数

标注:以后主要工作在DotNet框架下了,记录一些个人学习中遇到的问题,由于CSDN保存资源过于繁琐,以后就放到百度云盘

   Enumerator Demo         

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值