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),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率.说白了,语法糖就是对现有语法的一 ...
随机推荐
- (原)ubuntu挂载及开机自动挂载网络端的文件夹的方法
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7160792.html 参考网址: http://blog.csdn.net/tlight/articl ...
- c运行库、c标准库、windows API的区别和联系
C运行时库函数C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的. API函数API函数是操作系统为方便用户设计应用程序而提供的实现特定功能的函数,API函数也是C语言的函数实现的 ...
- 【Oracle 】tablespace 表空间创建和管理
1.表空间的概述 1. 表空间是数据库的逻辑组成部分. 2. 从物理上讲,数据库数据存放在数据文件中: 3. 从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成. 2.oracle的 ...
- 【C语言】字符串与整型数值之间的转换
一.将字符串转化为对应的数值 /*============================================================================= # # F ...
- SQL Server 2008中SQL之WaitFor
SQL Server 2008中SQL应用系列--目录索引 在SQL Server 2005以上版本中,在一个增强的WaitFor命令,其作用可以和一个job相当.但使用更加简捷. 看MSDN: ht ...
- 使用GDI+进行图片处理时要注意的问题
原文链接: http://blog.csdn.net/chenlycly/article/details/24112955 与GDI相比,GDI+要强大很多.对于Windows应用程序来说,用GDI是 ...
- Debian静态IP地址和DNS
Debian静态IP地址和DNS 一.配置文件及路径 /etc/network/interfaces 二.IP地址1. DHCP的IP配置如下 # The primary network interf ...
- [转]Filter 过滤器
1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 ...
- Jacobi并行拆解【补充】
作者:桂. 时间:2018-04-24 22:04:52 链接:http://www.cnblogs.com/xingshansi/p/8934373.html 前言 本文为Jacobi并行拆解一文 ...
- jmeter经验----java 读取文件中文乱码问题
很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new Arr ...