huakaiyueluo

导航

2013年11月20日 #

c# in depth之泛型的实现

摘要: 1.默认值表达式如果已经明确了要处理的类型,也就知道了它的“默认”值。不知道要引用的类型,就不能直接指定默认值。不能使用null,因为它可能不是一个引用类型,不能使用0,因为它可能不是数值类型。虽然很少需要用到默认值,但它偶尔还是有用的。Dictionary就是一个好的例子,它有个TryValue方法,它的作用有点儿像对数值类型进行处理的TryParse方法:他用一个输出参数来接收你打算获取的值,用一个Boolean返回值显示它是否成功。这意味着方法必须用TValue类型的值来填充输出参数。请记住,输出参数必须在方法正常返回之前赋值。为了满足这方面的要求,c#2提供了默认值表达式。虽然c#语言 阅读全文

posted @ 2013-11-20 00:21 huakaiyueluo 阅读(1232) 评论(4) 推荐(1) 编辑

2013年11月14日 #

用c#实现单链表(程序代码已经验证,完全正确)

摘要: 1.程序的大致结构如下图:2.下面依次列出各个类的代码①ILISTDs.cs 这是一个接口类,列出单链表的方法using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 单链表{ public interface IListDs { int GetLength();//求长度 void Clear();//清空操作 bool IsEmpty();//判断线性表是否为空 ... 阅读全文

posted @ 2013-11-14 23:58 huakaiyueluo 阅读(11726) 评论(13) 推荐(2) 编辑

c#调用语音功能

摘要: 转自http://www.cnblogs.com/Hans2Rose/p/WeatherSpeaker.html.Net里面自带了一个语音类库:System.Speech,调用系统的语音功能,就能实现string到语音的转换,很简单(记得先把电脑音量调大一下)://AddSystem.SpeechreferencefirstusingSystem.Speech.Synthesis;varreader=newSpeechSynthesizer();reader.SpeakAsync("I'm a programer. Hello, world!"); 阅读全文

posted @ 2013-11-14 19:05 huakaiyueluo 阅读(1556) 评论(0) 推荐(0) 编辑

2013年11月12日 #

c# in depth 之泛型实参的类型推断

摘要: 调用泛型方法时,指定类型实参常常会显得很多余。为简化工作,c#2编译器被赋予了一定的“智能”,让你在调用方法时,不需要显式声明类型实参。在深入讨论这个主题之前,必须强调一下:类型推断只适用于泛型方法,不适用于泛型类型。例子:static List MakeList(T first,T second)...List list=MakeList("Line1","Line2");方法中的每个参数都声明为类型T。即使拿掉方法中调用表达式的部分,也很容易看出在调用方法时,为T使用的类型实参是string。编译器允许将其省略,变成:List list=MakeLi 阅读全文

posted @ 2013-11-12 23:39 huakaiyueluo 阅读(525) 评论(0) 推荐(0) 编辑

2013年11月11日 #

c# in depth之泛型的类型约束详细

摘要: 类型约束1.引用类型约束这种约束(表示成T:class,必须是为类型参数指定的第一个约束)用于确保使用的类型实参是引用类型,这可能是任何类,接口,数组,委托或者已知是引用类型的另一个类型参数。例如 struct RefSample where T:class有效的封装类型包括:RefSample;RefSample;RefSample;无效的封装类型包括:RefSampleRefSample2.值类型约束这种约束(表示成T:struct)可以确保使用的类型实参是值类型,其中包括枚举。但是,它将可空类型排除在外。例如 class ValSample where T:struct有效的封装类型包括 阅读全文

posted @ 2013-11-11 00:44 huakaiyueluo 阅读(417) 评论(0) 推荐(0) 编辑

2013年11月6日 #

c#2解决c#1中的问题之用泛型实现参数化类型

摘要: 为什么需要泛型你手中还有c#1的代码吗?数一数其中的强制转换有多少,特别是那些大量使用集合的代码。几乎每次使用foreach都需要隐式的强制转换。使用那些为不同数据类型而设计的类型,就意味着强制转换。他们平静的告诉编译器:什么都别担心,一切都很正常,把那个表达式看做似乎它具有这种特性就可以了。任何api只要将object作为参数类型或返回类型使用,就可能在某个时候涉及强制类型转换。设计只有一个类,并将object作为根的层次结构,将使一切都变的更加简单。但是object类型本身是及其愚钝的一个存在。要用一个object做真正有意义的事情,几乎都要对它进行强制类型转换。强制类型转换很糟糕吧。它并 阅读全文

posted @ 2013-11-06 00:21 huakaiyueluo 阅读(1062) 评论(0) 推荐(0) 编辑

2013年11月2日 #

c#1所搭建的核心基础之值类型和引用类型

摘要: 这个主题很重要,在.NET中做的一切其实都是在和一个值类型或者引用类型打交道。现实世界中的值和引用 假定你在读一份非常棒的东西,希望一个朋友也去读他。于是你到复印室里复印了一份。这个时候他获得了属于他自己的一份完整副本。在这种情况下,我们处理的是值类型的行为。你和你朋友是各自独立的。你可以在自己的上面加一些注释,他的报纸不会改变。 再假定你在qq空间里发表了一篇日志,你想让朋友看到,这一次,你唯一需要给你朋友的是你qq空间日志所在的url地址。这就是引用类型的行为。当你修改你的日志时,你的朋友就你那个看到改变。 在c#和.net中,值类型和引用类型的差异与现实世界中差别类似。.Net中的大多数 阅读全文

posted @ 2013-11-02 02:12 huakaiyueluo 阅读(254) 评论(0) 推荐(0) 编辑

2013年10月31日 #

c#1所搭建的核心基础之类型系统的特征

摘要: 类型系统的特征简介几乎每种编程语言都有某种形式的一个类型系统。类型系统大致被分为:强/弱,安全/不安全,静态/动态,显式/隐式等类型。c#在类型系统世界中的位置c#1的类型系统是静态的、显式的和安全的静态类型和动态类型c#是静态类型的:每个变量都有一个特定的类型,而且该类型在编译时是已知的。只有该类型已知的的操作才被允许。例子:object o="hello";Console.WriteLine(o.Length);//报错 object o="hello";Console.WriteLine(o.ToString().Length);//5与静态类型对 阅读全文

posted @ 2013-10-31 03:16 huakaiyueluo 阅读(319) 评论(0) 推荐(0) 编辑

2013年10月29日 #

c#1所搭建的核心基础之委托

摘要: 本文将对c#1的委托进行详细探索委托(delegate) 注 delegate:vt.委派代表;授权给;[法律]债务转移;委托作用:在恰当的时间执行一系列操作1.简单委托的构成声明委托类型必须有一个方法包含了要执行的代码必须创建一个委托实例必须调用委托实例依次讨论各个步骤:①声明委托类型委托类型实际上只是参数类型的一个列表以及一个返回类型。它规定了类型的实例能表示的操作。例子:delegate void StringProcessor(string input)例子表明:要创建StringProcssor的一个实例需要一个返回值为void,有一个参数的函数。StringProcessor是一个 阅读全文

posted @ 2013-10-29 00:11 huakaiyueluo 阅读(257) 评论(0) 推荐(0) 编辑

2013年10月27日 #

公司框架常用函数和技巧

摘要: 1.将json字符串转化为动态类型并调用 dynamic d = JObject.Parse(actionModel.jsonEntity); string username = d.UserName.ToString();2.将json字符串直接转换为对象 var actionModel = Utils.ParseFromJson(action); EmailInfo entity = (EmailInfo)Newtonsoft.Json.JsonConvert.DeserializeObject(actionModel.jsonEntity, typeof(Ema... 阅读全文

posted @ 2013-10-27 00:27 huakaiyueluo 阅读(364) 评论(0) 推荐(0) 编辑