文章分类 -  C#

摘要:第一分钟:委托 有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件。先上一段代码:下边的代码,完成了一个委托应用的演示。一个委托分三个步骤: 1 public partial class WebForm3 : System.Web.UI.Page 2 { 3 //step01:首先用delegate定义一个委托 。 4 public delegate int CalculatorAdd(int x, int y); 5 6 protected void Page_Load(object sender, Even... 阅读全文
posted @ 2014-02-10 21:34 行进 阅读(144) 评论(0) 推荐(0) 编辑
摘要:1.dynamic关键字用于声明一个动态对象,然后通过该动态对象去调用方法或读写属性。以前我们都是在运行时通过反射,Emit,CodeDom等技术来完成。创建一个dynamic类型的对象需要使用一个特殊的构建器叫ExpandoObject。dynamic aehyok = new ExpandoObject(); aehyok.Name = "aehyok"; aehyok.Age = "24"; aehyok.Position = "ASP.NET"; Console.WriteLine("姓名:" + ... 阅读全文
posted @ 2014-01-29 22:00 行进 阅读(145) 评论(0) 推荐(0) 编辑
摘要:JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。这篇文章主要从以下几个方面来说明JSON。1,JSON的两种结构 2,认识JSON字符串 3,在JS中如何使用JSON 4,在.NET中如 阅读全文
posted @ 2014-01-02 14:32 行进 阅读(206) 评论(0) 推荐(0) 编辑
摘要:1,LINQ 对不同数据额编程查询因数据源的不同而大相径庭,LINQ(Language Integrated Query)是一种非用来进行数据访问额编程模型,使得.NET语言可以直接支持数据查询。LINQ可以用相同的语法访问不同的数据源,无论是访问文件,XML,数据库,注册表,事件日子,活动目录,还是第三方如Flickr的数据,都可以将数据作为对象使用,能够更好地与编程模型集成。LINQ的目标是降低访问数据的复杂度。 借助于LINQ技术,我们可以使用一种类似鱼SQL的语法来查询任何形式的数据。 2,LINQ的架构 LINQ包括5个部分:LINQ to Objects , LINQ to Da. 阅读全文
posted @ 2013-12-30 11:12 行进 阅读(175) 评论(0) 推荐(0) 编辑
摘要:引言如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注册,而不是直接使用委托变量的原因。主要是从封装性和易用性上去考虑,但是还漏掉了一点,事件应该由事件发布者触发,而不应该由客户端(客户程序)来触发。这句话是什么意思呢?请看下面的范例:NOTE:注意这里术语的变化,当我们单独谈 阅读全文
posted @ 2013-12-30 10:54 行进 阅读(113) 评论(0) 推荐(0) 编辑
摘要:一说到三层架构,我想大家都了解,这里就简单说下,三层架构一般包含:UI层、DAL层、BLL层,其中每层由Model实体类来传递,所以Model也算是三层架构之一了,例外为了数据库的迁移或者更OO点,DAL层就衍生出了IDAL接口。Model就是简单的对应数据库里面的类,DAL层就是主要操作数据库的方法了,BLL这个就看业务了。而DAL层大部分的方法都是差不多,无非就是几个Insert,Update,Delete,Select。 再来说下泛型,这个是2.0才开始有的,算是2.0中一个非常重要的技术了,关于泛型有什么好处优点就不说了,网上一大堆,其实说了也没有什么用,大家在实践中运用了就知道,我觉 阅读全文
posted @ 2013-12-07 09:14 行进 阅读(146) 评论(0) 推荐(0) 编辑
摘要:1,使用foreach语句 当我们为数组使用foreach语句时,这个语句为我们依次取出了数组中的每一个元素,允许我们读取它的值。1 例:声明一个有4个元素的数组,使用foreach循环打印这些项的值:2 int[] arr1={10,11,12,3};3 foreach(int item in arr1)4 Console.WriteLine("Item value: {0},item"); 数组能这么做的原因:数组可以按需提供一个叫做枚举数(enumerator)的对象。枚举数可以依次返回请求的数组的元素。枚举数“知道”项的次序并且跟踪它在序列中的位置,然后返回请求的当 阅读全文
posted @ 2013-12-02 08:58 行进 阅读(297) 评论(0) 推荐(0) 编辑
摘要:引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文
posted @ 2013-11-30 10:32 行进 阅读(144) 评论(0) 推荐(0) 编辑
摘要:LINQ基本查询操作符-获取数据(1) select() 语法是:public static IEnumerable select( this IEnumerbale source.Func selector)说明:1) select方法本身是一个泛型扩展方法2) 它作用于IEnumerable类型3) 他只接受一个Func类型参数4) Func是一个泛型委托,位于System名字的空间下,System.Core.dll中,在这里Selector是一个提取器。(2) 举例说明,先定义一个静态类ExtraClass,然后再静态类中在定义一个静态的扩展方法,实现输出信息。代码如下:public s 阅读全文
posted @ 2013-11-29 16:58 行进 阅读(200) 评论(0) 推荐(0) 编辑
摘要:LINQ是什么?(1) LINQ(Language Integrated Query)即语言集成查询。(2) LINQ主要包含以下三个部分 1) LINQ to Objects主要负责对象的查询 2) LINQ to XML 主要负责XML的查询 3) LINQ to ADO.NET 主要负责数据库的查询* LINQ to SQL* LINQ to DataSet * LINQ to EntrtiesLINQ的历史(1) 最初由Anders hejlsberg构思,最初的研究计划称为“C w”。(2)2007年11月19日,LINQ作为.NET FrameWork3.5的一部分正式发布。LIN 阅读全文
posted @ 2013-11-29 16:56 行进 阅读(450) 评论(0) 推荐(0) 编辑
摘要:匿名类:(1)有了前面对象初始化器的介绍,我们可以使用new{object initializer}或者new[]{object,…}来初始化一个匿名类或者不确定类型的数组,匿名类的对象需要使用var关键字声明;(2)应用场景,当直接使用select new{object initializer}这样的语法就是将一个Linq查询的结果返回到一个匿名类中;(3)将一组只读属性封装到单个对象中,而无需首先显示定义一个类型,类型名由编译器生成,并且不能在源代码级使用,每个属性的类型由编译器推断;(4)用来初始化属性的表达式不能是null,匿名函数和指针类型。var Kencery=new{ID=1, 阅读全文
posted @ 2013-11-29 15:01 行进 阅读(216) 评论(0) 推荐(0) 编辑
摘要:Iterator:枚举器如果你正在创建一个表现和行为都类似于集合的类,允许类的用户使用foreach语句对集合中的成员进行枚举将会是很方便的。这在C# 2.0中比 C# 1.1更容易实现一些。作为演示,我们先在 C# 1.1中为一个简单的集合添加枚举,然后我们修改这个范例,使用新的C#2.0 枚举构建方法。我们将以创建一个简单化的List Box作为开始,它将包含一个8字符串的数组和一个整型,这个整型用于记录数组中已经添加了多少字符串。构造函数将对数组进行初始化并使用传递进来的参数填充它。1 public ListBox(params string[] initialStrings)2 {3. 阅读全文
posted @ 2013-11-28 15:39 行进 阅读(167) 评论(0) 推荐(0) 编辑
摘要:1.使用命名的方法:场景:通用代码开发者想要创建一个通用的方法来筛选整型数组,但是这个通用方法要能够制定用来筛选该数组的的算法。首先,开发者必须声明一个委托delegate,该委托的设计原型就是收到一个int(整型)类型,如果在被筛选的数组中确实包含一个int类型,则这个委托将返回true。创建一个工具类并添加了delegate和筛选方法,这个公共代码如下: 1 public class Common 2 { 3 public delegate bool IntFilter(int i); 4 public static int[] FilterArra... 阅读全文
posted @ 2013-11-28 14:28 行进 阅读(184) 评论(0) 推荐(0) 编辑
摘要:1,委托概述常用数据类型(如int)的使用方法:先定义一个变量,然后再给它赋值,如下:int i;//定义变量i=100;//给变量赋值类似地,委托也可以看成是一种数据类型,可以用于定义变量。但它所定义的变量能接收的值只能是一个方法例: 定义一个类MathOpt,定义一个方法Add: public class MathOpt { public int Add(int argument1,int argument2) { return argument1+argument2; } } 定义一个委托数据类型MathOptDelegate: public delegate int MathOptD. 阅读全文
posted @ 2013-11-28 10:23 行进 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleApplication1 7 { 8 class Program 9 {10 static void Main(string[] args)11 {12 mytest mt = new mytest();13 foreach (string mychar in mt.m... 阅读全文
posted @ 2013-11-21 14:38 行进 阅读(161) 评论(0) 推荐(0) 编辑
摘要:1. 一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口(亦即,必须以某种方式返回IEnumerator对象)。2. IEnumerator对象具体实现了iterator(通过MoveNext(),Reset(),Current)。3. 从这两个接口的用词选择上,也可以看出其不同:IEnumerable是一个声明式的接口,声明实现该接口的class是“可枚举(enumerable)”的,但并没有说明如何实现枚举器(iterator);IEnumerator是一个实现式的接口,IEnumerator对象就是一个iterator(迭代器)。4. IEnume 阅读全文
posted @ 2013-11-21 14:26 行进 阅读(378) 评论(0) 推荐(0) 编辑
摘要:枚举类型是一种的值类型,它用于声明一组命名的常数。 (1)枚举的声明:枚举声明用于声明新的枚举类型。 访问修辞符 enum 枚举名:基础类型 { 枚举成员 } 基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 (2)枚举成员 枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基 阅读全文
posted @ 2013-11-21 11:47 行进 阅读(165) 评论(0) 推荐(0) 编辑
摘要:1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Person person = new Person("001", "Allan", "男", 23, "软件工程师"); 6 Person person2 = new Person("002", "Angelina", "女", 23, "销售经理"); 7 Console.WriteLine("{0}, 阅读全文
posted @ 2013-11-18 17:16 行进 阅读(143) 评论(0) 推荐(0) 编辑
摘要:C# 3.0和更高版本中有了对象集合初始化器,有了它,只需一句代码就可初始化一个对象或一个对象集合的所有属性。这在里先创建一个“商品”类,用于后面的示例演示:/// /// 商品类/// public class Product { /// /// 商品编号 /// public int ProductID { get; set; } /// /// 商品名称 /// public string Name { get; set; } /// /// 商品描述 /// public string Descript... 阅读全文
posted @ 2013-11-18 10:28 行进 阅读(151) 评论(0) 推荐(0) 编辑
摘要:在 C# 3.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁。下面示例演示了属性的标准实现和自动实现:class Program { class Person { //标准实现的属性 int _age; public int Age { get { return _age; } set { if (value 130) { Console.WriteLine("设置的年龄有误!"); ... 阅读全文
posted @ 2013-11-18 09:21 行进 阅读(135) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示