摘要:
ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,现已经包含在 Visual Studio 2008 Service Pack 1以及 .NET Framework 3.5 Service Pack 1中发布。目前最新版本为4.1,可以点此下载。 ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Schema与 Storage Schema 三层,其上还有. 阅读全文
随笔档案-2011年04月
C#基础系列—索引
2011-04-28 13:06 by 杨延成, 1299 阅读, 收藏, 编辑
摘要:
为了方便查询,现整理一份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 杨延成, 3767 阅读, 收藏, 编辑
摘要:
///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 杨延成, 2470 阅读, 收藏, 编辑
摘要:
队列是其元素以先进先出(FIFO)的方式来处理的集合。先放在队列中的元素会先读取。队列的例子有在机场排的队、人力资源部中等待处理求职信的队列、打印队列中等待处理的打印任务、以循环方式等]处理的线程。另外,还常常有元素根据其优先级来处理的队列。例如,在机场的队列中,商务舱乘客的处理要优先于经济舱的乘客。这里可以使用多个队列,一个队列对应一个优先级。在机场,这是很常见的,因为商务舱乘客和经济舱乘客有不同的登记队列。打印队列和线程也是这样。可以为一组队列建立一个数组,数组中的一项代表一个优先级。在每个数组项中,都有一个队列,其处理按照的方式进行。#region 队列测试 /// <summar 阅读全文
C#示例学习(-)-隐式声明
2011-04-28 12:39 by 杨延成, 536 阅读, 收藏, 编辑
摘要:
可以用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 杨延成, 690 阅读, 收藏, 编辑
摘要:
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 杨延成, 6929 阅读, 收藏, 编辑
摘要:
MEF全称Managed Extensibility Framework, 是一个用于创建可扩展的轻型应用程序的库。开发人员可以利用MEF发现并使用扩展,但并不需要配置,而且还可以在应用程序之间重用扩展。应用程序的扩展是一个大型应用程序架构师必须考虑的一个问题。以前的解决办法通常是用配置文件,接口及反射技术来进行实现。而MEF则 提供一种通过隐式发现组件的方法。MEF 组件以声明方式同时指定其依赖项(称为“导入”)及其提供的功能(称为“导出”)。MEF 是 .NET Framework 4 的组成部分,早期的 .NET Framework 版本引入了 Managed Add-in Framew 阅读全文
C#基础概念之延迟加载
2011-04-26 13:11 by 杨延成, 8375 阅读, 收藏, 编辑
摘要:
延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。先来看一下在Framework4.0中如何实现延迟加载。Framework4.0提供了一个包装类LazyT,可以轻松的实现延迟加载。[代码]本例... 阅读全文
C#基础概念之Lock
2011-04-25 15:33 by 杨延成, 782 阅读, 收藏, 编辑
摘要:
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 杨延成, 2604 阅读, 收藏, 编辑
摘要:
事件,是C#编程模型中重要的一个概念,通过对事件的理解,可以更好的了解C#程序运行机制。C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据事件的消息有所反应。这非常类似设计模式中的观察者模式。引发事件的类或对象,可以称之为事件源,注册并对处理事件的类或者对象可以称为事件订阅者或者事件监听者,我比较喜欢称之为事件监听者。比如:构建一个winform应用,在窗体Form1简单放置一个按钮控件,然后,双击按钮,则可以进入代码视图中按钮click事件处理程序。 private void button1_Click(object sen. 阅读全文
C#基础概念之委托
2011-04-21 20:46 by 杨延成, 3045 阅读, 收藏, 编辑
摘要:
委托是C#中非常重要的一个概念,并在C#中得到了丰富的应用,如事件,线程等。那什么是委托呢?具体来说,委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托具有以下特点:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。在C#中使用委托分为三步:1 阅读全文
WPF调用线程(三)线程池初步
2011-04-05 23:47 by 杨延成, 4311 阅读, 收藏, 编辑
摘要:
当我们频繁的要调用线程来执行任务时,一个好的办法是采用线程池来对线程进行管理,“线程池”是可以用来在后台执行多个任务的线程集合。 每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会占用主线程,也不会延迟后续请求的处理。一旦池中的某个线程完成任务,它将返回到等待线程队列中,等待被再次使用。 这使应用程序可以避免为每个任务创建新线程的开销。线程还是比较昂贵的。(you must avoid using threads as much as possible because they consume a lot of memory and they require time to 阅读全文
C#结合反射实现抽象工厂
2011-04-04 20:57 by 杨延成, 1191 阅读, 收藏, 编辑
摘要:
抽象工厂,大名鼎鼎的设计模式之一,我这仅做了一个例子,来简单记录一下,先来类图具体代码namespace AbstractFactoryTest{ class Program { static void Main(string[] args) { //具体工厂类型可以由配置文件中读取 IFactory carFactory = CarFactory.CreateFacory("ThreadTest.AudiFactory"); ICar car = carFactory.CreateCar(); car.Run(); } } public class CarFactory 阅读全文
C#3.0新特性示例学习(七)-Linq to object(4)分组查询
2011-04-04 19:08 by 杨延成, 410 阅读, 收藏, 编辑
摘要:
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 杨延成, 554 阅读, 收藏, 编辑
摘要:
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 杨延成, 456 阅读, 收藏, 编辑
摘要:
什么都不说了,看代码吧,有问题跟贴!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 杨延成, 517 阅读, 收藏, 编辑
摘要:
首先创建一个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 杨延成, 393 阅读, 收藏, 编辑
摘要:
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 杨延成, 573 阅读, 收藏, 编辑
摘要:
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 阅读全文
C#3.0-扩展方法
2011-04-04 18:42 by 杨延成, 352 阅读, 收藏, 编辑
摘要:
扩展方法是给现有类型添加一个方法。现在类型即可是基本数据类型(如int,String等),也可以是自己定义的类。 //Demo--1 //扩展基本类型 namespace TestExtensionMethods { // 必须建一个静态类,用来包含要添加的扩展方法 public static class Extensions { //要添加的扩展方法必须为一个静态方法 //此方法参数列表必须以this开始 第二个即为要扩展的数据类型,在这里就是要扩展string类型 //第三个就无所谓了,就是一对象名,名字随便,符合命名规则即可 //综合来讲,此方法就是要给string类型添加一个叫Test 阅读全文
WPF调用线程(二)复制文件并显示进度条(2)
2011-04-04 14:19 by 杨延成, 2352 阅读, 收藏, 编辑
摘要:
这篇文章,是上一篇的修改版,将进度条的更新也委托给了另外一个线程。由此也进行线程同步,通信等功能前台代码没有改变,参考:WPF调用线程(二)复制文件并显示进度条后台代码: 1 namespace WpfThreadTest 2 { 3 /// <summary> 4 /// ThreadCommunication.xaml 的交互逻辑 5 /// </summary> 6 public partial class ThreadCommunication : Window 7 { 8 Thread timeThread; 9 Thread copyThread; 10 T 阅读全文
WPF调用线程(二)复制文件并显示进度条
2011-04-03 22:42 by 杨延成, 10726 阅读, 收藏, 编辑
摘要:
这一段时间要进行WPF及多线程的培训,于是就写了一个例子,主要功能是用复制文件时,显示进度条。以演示在WPF中,如何调用线程,基础理论就不多说了,园子里好多大牛都写过,MSDN也有详尽介绍,也可以查看我的前两篇文章, C#线程基础WPF调用线程(-)也有一些介绍,先看运行效果xaml如下:XAML代码<Window x:Class="WpfThreadTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="htt 阅读全文
WPF调用线程(-)
2011-04-03 14:21 by 杨延成, 5402 阅读, 收藏, 编辑
摘要:
在WPF应用中,如果遇到多线程的需求时,如果引用WPF控件时会引发异常,异常内容:调用线程无法访问此对象,因为另一个线程拥有该对象。具体如下:调用代码:Thread countThread = new Thread(new ThreadStart(Count));countThread.Start(); 在调用的Count方法引发如下异常WPF 对象是从 DispatcherObject 派生的,这提供了用于处理并发和线程的基本构造。 WPF 基于调度程序实现的消息系统。 其工作方式与常见的 Win32 消息泵非常类似;事实上,WPF 调度程序使用 User32 消息执行跨线程调用。当WPF. 阅读全文
C#线程基础
2011-04-01 21:35 by 杨延成, 945 阅读, 收藏, 编辑
摘要:
在C#应用程序里,经常会用到线程,如在复杂的数据计算时,还要响应客户的其它请求。先不说些了,先来点基础知识。以下摘自MSDN线程处理使 C# 程序能够执行并发处理,以便您可以同时执行多个操作。例如,您可以使用线程处理来监视用户输入,执行后台任务,以及处理并发输入流。System.Threading 命名空间提供支持多线程编程的类和接口,使您可以轻松地执行创建和启动新线程,同步多个线程,挂起线程以及中止线程等任务。在创建操作系统进程时,操作系统将插入一个线程以执行该进程(包括任何原始应用程序域)中的代码。 从此刻起,就可以创建和销毁应用程序域,而不必创建或销毁任何操作系统线程。 如果正在执行的代 阅读全文