博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 类型实例化的语法糖--unity下诡异结果
阅读量:5068 次
发布时间:2019-06-12

本文共 1857 字,大约阅读时间需要 6 分钟。

类型实例化语法糖就是如下的用法:

public class Abc{    public int ID { get; set; }     public string Name { get; set; }     public string Url { get; set; }}

我们没有为上面的类声明构造函数,但是我们可以像下面的形式来实例化它

public static void Main(string[] args) {        var abc = new Abc{            ID=1,            Name="Ice",            Url="http://www.cnblogs.com/"        };    }

关于语法糖的其他用法,可以google或者百度之。

语法糖的这用用法,只是编译器提供的便捷方法而已,其等价于:

var abc = new Abc();abc.ID = 1;abc.Name = "Ice";abc.Url = "http://www.cnblogs.com";

 

 

-----------------------------------------------心怀鬼胎的分界线--------------------------------------------------------------------------------

 

分界线前面,简单介绍了下实例化语法糖的用法。而,下面我将提到的是,在代码过程中遇到的诡异事件。

我写了这样的代码:

class A{    public class A1    {        public int id = 1;        public bool isActive = true;    }    public int index;}A.A1 a1 = new A.A1(){    id = 2,    isActive = false    };

然后打印id,和isActive的值,发现了诡异的事情,于是写了几个测试用例,结果如下:

实验结果如下:a1.id ===>2a1.isActive===> true实验用例:(1) isActive 不设置默认值,    分三种情况:        a、在new时不设置值,输出值为false。        b、在new时设置为false,输出值为false。        c、在new时设置为true,输出值为true。(2) isActive 设置默认值为false,    分三种情况:        a、在new时不设置值,输出值为false。        b、在new时设置为false,输出值为false。        c、在new时设置为true,输出值为true。(3) isActive 设置默认值为true,    分三种情况:        a、在new时不设置值,输出值为true        b、在new时设置为false,输出值为true        c、在new时设置为true,输出值为true。

标红的为诡异的事情,因为按照语法糖的解释来说,输出值应该为false的。

这一点,求解释吧。对了,我用的环境是untiy4.6.5。用的框架是unity 3.5 .net full base class libraries .

有人说,干嘛要这么较真呢,不用语法糖就是了。我想说,对于一个很完善的项目,到处都是语法糖用法,你也不可能把同事的代码去给他改了吧

 

-----------------------后续-------------------------------------

终于还是忍不住,在C# ConsoleApplication下试了试,结果发现,木有任何诡异的问题。不管是 .Net4.0Client Profile 还是.Net3.5 Client Profile.

但是同样的代码,在unity工程下的C#代码内就存在问题。不论是用的 Unity3.5 .net Subnet Base Class Libraries 还是unity 3.5 .net full base Class Libraries。

使用类型语法糖的同学们,自己注意下吧。

转载于:https://www.cnblogs.com/slysky/p/5378038.html

你可能感兴趣的文章
设置Eclipse的workspace路径
查看>>
JMeter处理Cookie与Session
查看>>
[Leetcode] Combinations
查看>>
[Jobdu] 题目1493:公约数
查看>>
jdk版本和Java的运行环境版本不匹配 —— java.lang.IllegalArgumentException
查看>>
lua的点和冒号的区别
查看>>
关于css禁止文本复制属性
查看>>
在论坛中出现的比较难的sql问题:46(日期条件出现的奇怪问题)
查看>>
Dubbo源码学习--服务是如何发布的
查看>>
SQL中exsit和in
查看>>
Matlab学习笔记0—课程导入
查看>>
mysql 修改数据库data存放位置
查看>>
20145239 《Java程序设计》第9周学习总结
查看>>
二叉树的链表存储与遍历
查看>>
Java-Note
查看>>
键盘回车事件导致页面刷新的问题
查看>>
【系列】 点分治
查看>>
Java设计模式之单例模式
查看>>
初识面向对象
查看>>
软件工程:方法与实践 第六次读书笔记
查看>>