C# 类型实例化的语法糖--unity下诡异结果
类型实例化语法糖就是如下的用法:
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=,
Name="Ice",
Url="http://www.cnblogs.com/"
};
}
关于语法糖的其他用法,可以google或者百度之。
语法糖的这用用法,只是编译器提供的便捷方法而已,其等价于:
var abc = new Abc();
abc.ID = ;
abc.Name = "Ice";
abc.Url = "http://www.cnblogs.com";
-----------------------------------------------心怀鬼胎的分界线--------------------------------------------------------------------------------
分界线前面,简单介绍了下实例化语法糖的用法。而,下面我将提到的是,在代码过程中遇到的诡异事件。
我写了这样的代码:
class A
{
public class A1
{
public int id = ;
public bool isActive = true;
}
public int index;
} A.A1 a1 = new A.A1(){
id = ,
isActive = false
};
然后打印id,和isActive的值,发现了诡异的事情,于是写了几个测试用例,结果如下:
实验结果如下:
a1.id ===>
a1.isActive===> true 实验用例:
() isActive 不设置默认值,
分三种情况:
a、在new时不设置值,输出值为false。
b、在new时设置为false,输出值为false。
c、在new时设置为true,输出值为true。
() isActive 设置默认值为false,
分三种情况:
a、在new时不设置值,输出值为false。
b、在new时设置为false,输出值为false。
c、在new时设置为true,输出值为true。
() 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。
使用类型语法糖的同学们,自己注意下吧。
C# 类型实例化的语法糖--unity下诡异结果的更多相关文章
- 【Unity3D游戏开发】之利用语法糖添加自定义拓展方法(下) (十八)
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1. ...
- C#语法糖大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
- C#语法糖(Csharp Syntactic sugar)大汇总
首先需要声明的是"语法糖"这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕 ...
- C#语法糖
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1. ...
- C#语法糖(Csharp Syntactic sugar)
目录 一.C#语法糖大汇总 1. 经过简化的Property2. 经过两次变异的委托写法3. 集合类的声明4. 集合类各个项的操作5. using == try finally6. 可爱的var7. ...
- C#语法糖大汇总【转发】
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1. ...
- C#语法糖,让编程更具乐趣
一.什么是语法糖 语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法 ...
- 【Java基础】Java中的语法糖
目录 Java中的语法糖 switch对String和枚举类的支持 对泛型的支持 包装类型的自动装箱和拆箱 变长方法参数 枚举 内部类 条件编译 断言 数值字面量 for-each try-with- ...
- Java中部分常见语法糖
语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率.说白了,语法糖就是对现有语法的一 ...
随机推荐
- NYOJ-----最少乘法次数
最少乘法次数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2 ...
- java struts2入门学习--OGNL语言基本用法
一.知识点学习 1.struts2中包含以下6种对象,requestMap,sessionMap,applicationMap,paramtersMap,attr,valueStack; 1)requ ...
- 运维自动化之Cobbler系统安装使用详解[good]
一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成P ...
- 寻找自己的道路——与技术同胞共勉 一种划分为七个阶段的道路:自信=>意志=>布局=>切入点=>团队=>渠道=>产品
寻找自己的道路——与技术同胞共勉 每个人的幸福都是不一样的.我喜欢田园式的生活,在人多的地方总是不舒服. 对我来说,最幸福莫过于在工作中做着自己喜欢的事情.闲暇时,在能够眺望江边的地方,端着一杯红酒, ...
- codesmith连接postgresql修复bug
转:CodeSmith7代码生成器针对PostgreSQL数据库无法使用的Bug修复全过程 我自己又修改过,完整的PostgreSQLSchemaProvider.cs文件如下 using Npgsq ...
- block(七)__block和__weak的区别-b
在MRC下,我们通常使用__block , 而在ARC下我们通常使用__weak , 或者__unsafe_unretaine __block(不安全,不建议使用) 来修饰对象防止循环引用而造成的内存 ...
- rhel 7 设置默认运行级别为图形
查看默认级别 # systemctl get-default multi-user.target # cat /etc/inittab # inittab is no longer used when ...
- 【转】我的第一次和最后一次 Hackathon 经历
我的第一次和最后一次 Hackathon 经历 在旧金山地区经常有一些叫做“Hackathon”的活动,吸引挺多人参加.我一直听说这个名字,可是一直不知道它到底是什么.我从来对竞赛式的活动不感兴趣,我 ...
- Java原理之HashMap
一下JDK1.7测试没问题,1.8就不一样了,应该散列的更优化. 最近看了很多java底层之HashMap的原理,根据自己的实现如下: package com.gmq.chapter02; impor ...
- SQL 中的 UNION 和UNION ALL 的区别
UNION表示“并”,当用的时候,系统会自动将重复的元组去掉,如果要保留重复元组则就用UNION ALL UNION 会合并重复数据,(由于要合并重复,该操所 隐藏着一个 排序的操作.)UNION A ...