上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 90 下一页
摘要: 20.1隐式类型在C#3.0中增加了一个变量声明var,这个声明和JavaScript的var类似,但也有不同。相同之处是它可以用var来声明任何类型的局部变量;而不同之处在于它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。20.1.1隐式类型局部变量的声明与使用在C# 3.0中,引进了一个新的关键字叫做var。var允许你声明一个新变量,它的类型是从用来初始化器变量的表达式里隐式的推断出来的,即在声明时,你不需要给它定义类型,它会根据它的初始化器表达式来推断出它的类型。因此,我们称它为隐式类型。如你可以这样来声明变量:vari = 10;//声明一个局部 阅读全文
posted @ 2011-06-10 16:03 董雨 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 上面我们向读者讲解了隐式类型,接下来我们继续来讨论C#3.0另一个新特性:匿名类型。20.2.1引入匿名类型在很多情况下,我们需要一种能够临时将一批具有一定关联的数据存放起来的对象;或者在某些情况下,我们对仅一个对象的“形状”(如属性的名字和类型等)比较感兴趣。例如Book类,当它和其他商品放在一起进行查询时,我们可能仅对其名称和价格感兴趣,并且希望将这两种属性放在另外一个单独的临时对象中以备今后使用。这时,我们关注的仅仅是这个临时对象具有Name和Price的属性感兴趣,至于它究竟是什么类型就无关紧要了。然而,为了使这样一个对象得以存在,我们不得不为这个无关紧要的类型写上一大堆“样本代码”, 阅读全文
posted @ 2011-06-10 16:02 董雨 阅读(190) 评论(0) 推荐(0) 编辑
摘要: http://kenchell.blog.163.com/blog/static/26088309200971611491146/当我们需要对已有类的功能进行扩展时,我们通常会想到继承,继承已有类,然后为其加入新的行为。而C# 3.0中加入的扩展方法(Extension Methods)特性,则提供了另一种实现功能扩展的方式。扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上像调用实例方法那样进行调用。因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充,这种方法并不会产生新的类型,而是采用向已有类中加入新方法的方式来完成功能扩展;同时,也可 阅读全文
posted @ 2011-06-10 15:46 董雨 阅读(201) 评论(0) 推荐(0) 编辑
摘要: http://kenchell.blog.163.com/blog/static/260883092009716114946383/在C#3.0中,一个对象创建表达式可以包含一个对象或集合初始化器,用于初始化新创建的对象的成员或新创建的集合的元素。对象创建表达式:newtype(argument-list(可选))对象或集合初试化器(可选)newtype对象或集合初试化器一个对象创建表达式可以省略构造器参数列表,并将其连同圆括号一起替换为一个对象或集合初始化器。省略构造器参数列表并将其连同圆括号一起替换为一个对象或集合初始化器等价于指定一个空的参数列表。在执行一个带有对象或集合初始化器的对象创 阅读全文
posted @ 2011-06-10 15:45 董雨 阅读(211) 评论(0) 推荐(0) 编辑
摘要: http://info.codepub.com/2008/07/info-20584.html我在上篇文章举了一个简单的C++程序非常简略的解释C++代码和汇编代码的对应关系,在后面的文章中我将按照不同的Topic来仔细介绍更多相关的细节。虽然我很想一开始的时候就开始直接介绍C++和汇编代码的对应关系,不过由于VC编译器会在代码中插入各种检查,SEH,C++异常等代码,因此我觉得有必要先写一下一些在阅读VC生成的汇编代码的时候常见的一些东西,然后再开始具体的分析C++代码的反汇编。这篇文章会首先涉及到运行时检查(Runtime Checking)。Runtime Checking运行时检查是V 阅读全文
posted @ 2011-05-25 23:31 董雨 阅读(428) 评论(0) 推荐(0) 编辑
摘要: http://info.codepub.com/2008/07/info-20583.html如果想要了解C++内部的实现原理,没有什么比观察C++代码对应的汇编代码来的更直接了。本系列主要从汇编角度研究C++代码和汇编的对应关系,揭示C++内部的机制和原理。在第一篇文章中我将从一个简单的C++程序着手快速解释一下C++反汇编代码的基本的结构和内容,相当于一个简单的Preview。而在后续的文章中,我将根据不同的Topic,详细解释C++代码对应的反汇编代码。一个简单的C++程序示例如下:class my_class{public : my_class() { m_member = 1; } 阅读全文
posted @ 2011-05-25 23:18 董雨 阅读(529) 评论(2) 推荐(0) 编辑
摘要: http://delxu.wordpress.com/2011/03/13/wifi-analyzer-android%E6%89%8B%E6%9C%BA%E7%89%88/Wifi Analyzer(#Android#手机版) Posted on 2011/03/13 by delxu delxu 原创文档,转载请注明出处。谢谢!这几天新入手一个HTC Desire HD手机,玩的不亦乐乎,突然发现一个非常棒的Wifi工具,忍不住和大家一起分享一下。Wifi Analyzer (#Android#手机版)下载Linkhttps://market.android.com/details?id= 阅读全文
posted @ 2011-05-23 15:46 董雨 阅读(953) 评论(0) 推荐(0) 编辑
摘要: 不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种1. Little endian:将低序字节存储在起始地址2. Big endian:将高序字节存储在起始地址LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说 低位值小,就应该放在内存地址小的地方,也即内存地址低位 反之,高位值就应该放在内存地址大的地方,也即内存地址高位 BE big-endian 最直观的字节序 地址低位存储值的高位 地址高位存储值的低位 为什么说直观,不要考虑对应关 阅读全文
posted @ 2011-05-23 15:36 董雨 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 今天来的时候打开了MSDN扫了一眼C#里的枚举类型~~ 蓦然发现这东西还有些新玩法。http://msdn.microsoft.com/zh-cn/library/sbbt4032.aspx#Y791首先是简单介绍,……在此略过。因为enum用法很简单么~定义一个简单的枚举类型: enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; //这时候 Days.Sat = 0 ,后面依此递增。当然也可以手动指定起始值: enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; //这样就从1开始了。 枚举型的隐含类型为 阅读全文
posted @ 2011-05-22 20:26 董雨 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 在C#中实现类似位域的操作http://www.cnblogs.com/TianFang/archive/2011/01/23/1942446.html这篇文章和前面的那篇在C#中实现BigEndian的数字一样,都是在解析网络协议和文件时遇到的。有时协议会规定把一个byte的数字分成几个部分,某一部分表示一个数字。这种情况下在C中可以用位域很简单的实现,但是,在C#中就没那么容易了。这里是我写的一个类,专门用来辅助实现这种操作。 /// <summary> ///这个类主要用于那种将一个字节分成若干部分,每个部分表示一个数的类型 /// </summary> clas 阅读全文
posted @ 2011-05-20 00:09 董雨 阅读(517) 评论(0) 推荐(0) 编辑
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 90 下一页