代码改变世界

随笔分类 -  C#

C#基础系列—索引

2011-04-28 13:06 by 杨延成, 1292 阅读, 收藏, 编辑
摘要: 为了方便查询,现整理一份C#基础系列索引,这里面包括有一些是我很早以前在赛迪网博客写的,现在全部都搬到了这里C#基础概念之延迟加载C#基础概念之事件C#基础概念之委托 C#基础概念之MEF初步C#基础概念之LockC#-线程基础C#结合反射实现抽象工厂 C#示例学习(九)-Linq to sqlC#示例学习(八)-Linq to object(5)分页效果C#示例学习(七)-Linq to object(4)分组查询C#示例学习(六)-Linq to object(3)查询方法操作集合C#示例学习(五)--Linq to object(2)操作集合C#示例学习(四)--Linq to Obje 阅读全文

C#集合-有序列表

2011-04-28 12:53 by 杨延成, 3764 阅读, 收藏, 编辑
摘要: ///SortedList<TKey, TValue>。这个类按照键给元素排序 #region 有序表测试 /// <summary> /// 有序表测试 /// </summary> public class TestSortedList { public void TestSortedListMethod() { SortedList<string, string> strSortedList = new SortedList<string, string>(); strSortedList.Add("环境恶化" 阅读全文

C#集合-队列

2011-04-28 12:49 by 杨延成, 2465 阅读, 收藏, 编辑
摘要: 队列是其元素以先进先出(FIFO)的方式来处理的集合。先放在队列中的元素会先读取。队列的例子有在机场排的队、人力资源部中等待处理求职信的队列、打印队列中等待处理的打印任务、以循环方式等]处理的线程。另外,还常常有元素根据其优先级来处理的队列。例如,在机场的队列中,商务舱乘客的处理要优先于经济舱的乘客。这里可以使用多个队列,一个队列对应一个优先级。在机场,这是很常见的,因为商务舱乘客和经济舱乘客有不同的登记队列。打印队列和线程也是这样。可以为一组队列建立一个数组,数组中的一项代表一个优先级。在每个数组项中,都有一个队列,其处理按照的方式进行。#region 队列测试 /// <summar 阅读全文

C#示例学习(-)-隐式声明

2011-04-28 12:39 by 杨延成, 531 阅读, 收藏, 编辑
摘要: 可以用var来进行声明变量,声明的变量的类型由初始化此变量值的类型决定,这一点有点象VB6.0当中的变体型。 class Program { static void Main(string[] args) { //用var关键字声明, var i = 0; //声明必须初始化 //var i; //不能初始为空 //var i = null; Console.WriteLine(i); //可以再次赋值 // i = 10; //不能再次赋值为其它类型 // i = "0"; Console.WriteLine(i); //用var声明可以赋给不同类型的值,他的类型由初始化 阅读全文

C#示例学习(八)-Linq to object(5)分页效果

2011-04-28 12:32 by 杨延成, 688 阅读, 收藏, 编辑
摘要: 1 public void TestMethod() 2 { 3 List<Book> bookList = new List<Book> 4 { 5 new Book{Title="C#高级编程",Book_Author=new Author{Name="黄老邪",Address="桃花岛"},Price=128f}, 6 new Book{Title="Think in Java",Book_Author=new Author{Name="欧阳峰",Address=& 阅读全文

C#基础概念之MEF初步

2011-04-27 15:46 by 杨延成, 6919 阅读, 收藏, 编辑
摘要: MEF全称Managed Extensibility Framework, 是一个用于创建可扩展的轻型应用程序的库。开发人员可以利用MEF发现并使用扩展,但并不需要配置,而且还可以在应用程序之间重用扩展。应用程序的扩展是一个大型应用程序架构师必须考虑的一个问题。以前的解决办法通常是用配置文件,接口及反射技术来进行实现。而MEF则 提供一种通过隐式发现组件的方法。MEF 组件以声明方式同时指定其依赖项(称为“导入”)及其提供的功能(称为“导出”)。MEF 是 .NET Framework 4 的组成部分,早期的 .NET Framework 版本引入了 Managed Add-in Framew 阅读全文

C#基础概念之延迟加载

2011-04-26 13:11 by 杨延成, 8356 阅读, 收藏, 编辑
摘要: 延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。先来看一下在Framework4.0中如何实现延迟加载。Framework4.0提供了一个包装类LazyT,可以轻松的实现延迟加载。[代码]本例... 阅读全文

C#基础概念之Lock

2011-04-25 15:33 by 杨延成, 777 阅读, 收藏, 编辑
摘要: lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Thread t = new Thread(LockObject.MonitorIncrement); 6 Thread t1=new Thread(new ThreadStart(LockObject.LockIncrement)); 7 t.Start(); 8 t1.Start(); 9 }10 }11 12 13 public class LockObject14 {15 // 阅读全文

C#基础概念之事件

2011-04-24 15:55 by 杨延成, 2599 阅读, 收藏, 编辑
摘要: 事件,是C#编程模型中重要的一个概念,通过对事件的理解,可以更好的了解C#程序运行机制。C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据事件的消息有所反应。这非常类似设计模式中的观察者模式。引发事件的类或对象,可以称之为事件源,注册并对处理事件的类或者对象可以称为事件订阅者或者事件监听者,我比较喜欢称之为事件监听者。比如:构建一个winform应用,在窗体Form1简单放置一个按钮控件,然后,双击按钮,则可以进入代码视图中按钮click事件处理程序。 private void button1_Click(object sen. 阅读全文

C#基础概念之委托

2011-04-21 20:46 by 杨延成, 3039 阅读, 收藏, 编辑
摘要: 委托是C#中非常重要的一个概念,并在C#中得到了丰富的应用,如事件,线程等。那什么是委托呢?具体来说,委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托具有以下特点:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。在C#中使用委托分为三步:1 阅读全文

C#3.0新特性示例学习(七)-Linq to object(4)分组查询

2011-04-04 19:08 by 杨延成, 408 阅读, 收藏, 编辑
摘要: 1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5 6namespace TestLinQ2 7{ 8 public class Book 9{10 public string Title { set; get; }11 public Author Book_Author { set;get;}12 public float Price { set; get; }13 }14 public class Author15{16 public string Name 阅读全文

C#3.0(六)-Linq to object(3)查询方法操作集合

2011-04-04 19:02 by 杨延成, 550 阅读, 收藏, 编辑
摘要: Linq中的查询方法的使用,看代码吧! 1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5 6namespace TestLinQ2 7{ 8 class Student 9 { 10 public string Name 11 { 12 set; 13 get; 14 } 15 public int ID 16 { 17 set; 18 get; 19 } 20 } 21 22/// 通过使用 C# 3.0 中引入的声明性查询语法, 23/// 介绍性 LINQ 阅读全文

C#3.0(五)--Linq to object(2)操作集合

2011-04-04 19:01 by 杨延成, 452 阅读, 收藏, 编辑
摘要: 什么都不说了,看代码吧,有问题跟贴!1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5 6namespace TestLinQ2 7{ 8 class Student 9 {10 public string Name11{12 set;13 get;14 }15 public int ID16 {17 set;18 get;19}20}21class Program22 {23static void Main(string[] args)24{25///数组测试2 阅读全文

VS2008开发-Linq to sql

2011-04-04 18:58 by 杨延成, 512 阅读, 收藏, 编辑
摘要: 首先创建一个C#控制台工程LINQToSQL,然后打开服务浏览器,单击右键,创建数据库Student数据库创建数据库完成后,创建表stu_info在解决方案管理器中击右键,选择添加新项,在弹出窗口中选择Linq to sql class 创建完成后,在服务管理器中,拖到刚创建的表Stu_info到Student.dbml中,打开Program.cs文件,键入如下代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 namespace LINQToSQ 阅读全文

C#3.0(四)--Linq to Objects

2011-04-04 18:53 by 杨延成, 389 阅读, 收藏, 编辑
摘要: Linq(Language Integrated Query )查询语法跟SQL查询语法很相识,除了先后顺序. 1 //Demo 2 namespace TestLINQ 3 { 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 ///创建数据源 9 int[] numbers = new int[] { 0, 1, 2, 3, 4, 5, 6 };10 ///创建查询11 /// 查询会返回 IEnumerable 类型,我们可以直接去获取12 /// IEnumerable numQuery =13 /// from n 阅读全文

C#3.0-Lambda表达式

2011-04-04 18:44 by 杨延成, 567 阅读, 收藏, 编辑
摘要: Lambda表达式是一个匿名方法,他可以包含一个表达式或者语句块,他能够创造委托或表达式树类型。 1 //Demo -带一个参数的Lambda表达式 2 namespace TestLambda 3 { 4 //声明一个委托,包含一个int型参数 5 delegate int del(int n); 6 7 public class MyLambda 8 { 9 public int TestMethod(int n) 10 { 11 ///利用Lambda表达式构造一个委托 12 /// x => x * x 表达式表示一个方法此方法等同于 13 /// public int Meth 阅读全文