自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (7)
  • 收藏
  • 关注

转载 深入理解事件

引言:前面几个专题对委托进行了详细的介绍的,然后我们在编写代码过程中经常会听到“事件”这个概念的,尤其是写UI的时候,当我们点击一个按钮后VS就会自动帮我们生成一些后台的代码,然后我们就只需要在Click方法里面写代码就可以,所以可能有些刚接触C#的朋友就觉得这样很理所当然的,也没有去思考这是为什么的,为什么点击下事件就会触发我们在Click方法里面写的代码呢?事件到底扮演个什么样的角色呢

2017-07-27 14:16:14 234

原创 C#中的深浅拷贝

也许会有人这样解释C# 中浅拷贝与深拷贝区别:        浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝。不能说它完全错误,但至少还不够严谨。比如:string 类型咋说? 其实,我们可以通过实践来寻找答案。首先,定义以下类型:int 、string 、enum 、struct 、class 、int[ ] 、string[ ]代码如下

2017-07-26 08:46:38 347

原创 深入理解扩展方法

在 Java 中没有这样的东西,一个类一旦是 final 的 ,这个类就不能再被添加方法, 但是 C# 能够做到,可以给 sealed 类添加新的方法,这点我还是比较喜欢 c# 的。这就是 C# 中的扩展方法。那么什么情况下我们才需要去给一个类写扩展方法呢?系统自带的类型,我们无法去修改;修改源代码需要较大的精力,而且可能会带来错误;我们只是需要一个或者较少的几个方法,修改源代

2017-07-25 11:27:09 291

原创 C# 语法糖整理

首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率,在性能上也不会带来损失。这让java开发人员羡慕不已,呵呵。 1.  经过简化的Property早些时候我们这样声明Property12345678

2017-07-25 10:42:30 1348

转载 迭代器与yield return

引言:   在C# 1.0中我们经常使用foreach来遍历一个集合中的元素,然而一个类型要能够使用foreach关键字来对其进行遍历必须实现IEnumerable或IEnumerable接口,(之所以来必须要实现IEnumerable这个接口,是因为foreach是迭代语句,要使用foreach必须要有一个迭代器才行的,然而IEnumerable接口中就有IEnumerator Ge

2017-07-24 17:42:38 662

转载 Lambda表达式与表达式树

引言:   对于刚刚接触Lambda表达式的朋友们,可能会对Lambda表达式感到非常疑惑,它到底是个什么什么样的技术呢?以及它有什么好处和先进的地方呢?下面的介绍将会解除你这些疑惑。 一、Lambda表达式的演变过程Lambda表达式其实大家可以理解为它是一个匿名函数(对于匿名函数的介绍大家可以参考我这篇文章), Lambda表达式可以包含表达式和语句,并且可

2017-07-24 14:02:25 526

原创 怎么使用LINQ方法来比较自定义类型对象

LINQ提供了方便的语法和很多操作对象集合的有用的方法。但是,要让LINQ比较方法如Distinct或Intersect能正确处理,类型必须要满足一些条件。让我们看看Distinct方法,它从集合中返回所有的不重复对象。List numbers = new List { 1, 1, 2, 3 };var distinctNumbers = numbers.Distinct();

2017-07-24 10:33:18 1012

转载 C#设计模式(九)装饰者模式(Decorator Pattern)

一、引言在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手机类)、AccessoriesPhone(挂件手机类)等,这样就会导致 ”子类爆炸“问题,为了解决这个问题,我们可以使用装饰者模式来动态地给一个对象添加额外的职责。下面让我们看看装饰者模式。二、装

2017-07-24 09:15:36 225

转载 C#设计模式(八)桥接模式(Bridge Pattern)

一、引言这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视品牌的遥控器都继承这个抽象类,具体设计类图如下:这样的实现使得每部不同型号的电视都有自己遥控器实现,这样的设计对于电视机的改变可以很好地应对,只需要添加一个派生类就搞定了,但随着

2017-07-24 08:54:19 323

转载 C#设计模式(七)适配器模式(Adapter Pattern)

一、引言在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?解决这个问题的办法就是我们本文要介绍的适配器模式——使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用。二、适配器模式的详细介

2017-07-21 14:37:34 265

转载 C#设计模式(六)原型模式(Prototype Pattern)

一、引言在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导致子类的数量不断增多,反而增加了系统复杂程度,所以在这里使用工厂模式来封装类创建过程并不合适,

2017-07-21 11:46:37 210

转载 C#设计模式(五)建造者模式(Builder Pattern)

一、引言  在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成。例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象,它是由CPU、主板、硬盘、显卡、机箱等组装而成的,如果此时让采购员一台一台电脑去组装的话真是要累死采购员了,这里就可以采用建造者模式来解决这个问题,我们可以把电脑的各个组件的组装过程封装到一

2017-07-21 10:42:14 339

转载 C#设计模式(四)抽象工厂模式

一、引言在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法模式每个具体工厂类只完成单个实例的创建,所以它具有很好的可扩展性。但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在这里不适用

2017-07-21 10:09:14 209

转载 C#设计模式(三)工厂方法模式

一、引言  在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模式可以解决简单工厂模式中存在的这个问题,下面就具体看看工厂模式是如何解决该问题的。二、工厂方法模式的实现  工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的

2017-07-21 09:25:52 302

转载 C#设计模式(二)简单工厂模式

一、引言  这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式——简单工厂模式。二、简单工厂模式的介绍  说到简单工厂,自然的第一个疑问当然就是什么是简单工厂模式了? 在现实生活中工厂是负责生产产品的,同样在设计模式中,简单工厂模式我们也可以理解为负责生产对象的一个类

2017-07-21 09:17:24 210

转载 C#设计模式(一)单例模式

一、引言最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考。首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类)二、单例模式的介绍说到单例模式,大家第

2017-07-20 11:49:29 330

转载 深入理解泛型(二) 协变性和逆变性

引言:  在C# 2.0中泛型并不支持可变性的(可变性指的就是协变性和逆变性),我们知道在面向对象的继承中就具有可变性,当方法声明返回类型为Stream,我们可以在实现中返回一个FileStream的类型,此时就存在一个隐式的转化——从FileStream类型(子类引用)——>Stream类型(父类引用),并且引用类型的数组也存在这种从子类引用——>父类引用的转化,例如string[]

2017-07-20 11:15:14 1245

转载 深入理解泛型(一)

一、类型推断  在我们写泛型代码的时候经常有大量的""符号,这样有时候代码一多,也难免会让开发者在阅读代码过程中会觉得有点晕的,此时我们觉得晕的时候肯定就会这样想:是不是能够省掉一些""符号的呢?你有这种需求了, 当然微软这位好人肯定也会帮你解决问题的,这样就有了我们这部分的内容——类型推断,意味着编译器会在调用一个泛型方法时自动判断要使用的类型,(这里要注意的是:类型推断只使用于泛型方法

2017-07-20 11:13:06 342

转载 Linq与传统方法对比、遍历文件示例

本专题概要:Linq是什么使用Linq的好处在哪里Linq的实际操作例子——使用Linq遍历文件目录小结 引言:   终于到了C# 3中最重要特性的介绍了,可以说之前所有介绍的特性都是为了Linq而做准备的,然而要想深入理解Linq并不是这个专题可以介绍完的,所以我打算这个专题将对Linq做一个简单的介绍,对于Linq的深入理解我将会后面单独作为一个系列要和大家分享下。

2017-07-20 10:48:10 628

转载 C#中值与引用的传递

一、引言  对于一些初学者(包括工作几年的人在内)来说,有时候对于方法之间的参数传递的问题感觉比较困惑的,因为之前在面试的过程也经常遇到参数传递的基础面试题,这样的面试题主要考察的开发人员基础是否扎实,对于C#中值类型和引用类型有没有深入的一个理解——这个说的理解并不是简单的对它们简单一个定义描述,而在于它们在内存中分布。所以本文章将带领大家深入剖析下C#中参数传递的问题,并分享我自己的一

2017-07-20 10:16:38 329

转载 C#的类(Class)与结构(Struct)

C# 结构(Struct)在 C# 中,结构是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构。结构是用来代表一个记录。假设您想跟踪图书馆中书的动态。您可能想跟踪每本书的以下属性:TitleAuthorSubjectBook ID定义结构为了定义一个结构,您必须使用 struct 语句

2017-07-19 14:57:46 484

原创 ArcSDE删除用户及表空间

今天ArcGIS的SDE发生了一点小故障,导致系统表丢失,所以需要重建一下SDE数据库,在删除SDE用户和所在的表空间过程中遇到下面两个ORA错误,解决方法如下:drop tablespace TB_SDE including contents and datafiles;drop user SDE cascade; 1)删除表空间时报错:ORA-29857:表空间中存在域索引和/或次...

2017-07-18 10:29:53 2270

转载 C#中的值类型和引用类型

引言本文之初的目的是讲述设计模式中的 Prototype(原型)模式,但是如果想较清楚地弄明白这个模式,需要了解对象克隆(Object Clone),Clone其实也就是对象复制。复制又分为了浅度复制(Shallow Copy)和深度复制(Deep Copy),浅度复制 和 深度复制又是以 如何复制引用类型成员来划分的。由此又引出了 引用类型和 值类型,以及相关的对象判等、装箱、拆箱等基础

2017-07-16 18:08:07 430

转载 C#中的泛型

C#中的泛型.Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持。通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。本文将系统地为大家讨论泛型,我们先从理解泛型开始。1.1 理解泛型1.1.1 为什么要有泛型?我想不论大家通过什么方式进入了计算机程序设计这个行业,都免不了要面

2017-07-16 18:06:43 212

转载 C#中的委托和事件(2)

引言如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注

2017-07-16 00:52:13 431

转载 C# 中的委托和事件(1)

引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事

2017-07-16 00:50:49 353

转载 .Net中的加密解密

引言在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。加密和解密说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者

2017-07-14 14:02:36 554

转载 .NET中的反射(4)

动态创建对象在前面节中,我们先了解了反射,然后利用反射查看了类型信息,并学习了如何创建自定义特性,并利用反射来遍历它。可以说,前面三节,我们学习的都是反射是什么,在接下来的章节中,我们将学习反射可以做什么。在进行更有趣的话题之前,我们先看下如何动态地创建一个对象。我们新建一个Console控制台项目,叫做Reflection4(因为本文是Part4,你也可以起别的名字)。然后,添加

2017-07-14 12:44:36 235

转载 .NET中的反射(3)

反射特性(Attribute)可能很多人还不了解特性,所以我们先了解一下什么是特性。想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发送给某人:// title: 标题;author:作者;content:内容;receiverId:接受者Idpublic bool SendMsg(string title, string author, string conte

2017-07-14 11:09:13 176

转载 .NET中的反射(2)

反射概述 和Type类1.反射的作用简单来说,反射提供这样几个能力:1、查看和遍历类型(及其成员)的基本信息和程序集元数据(metadata);2、迟绑定(Late-Binding)方法和属性。3、动态创建类型实例(并可以动态调用所创建的实例的方法、字段、属性)。序章中,我们所采用的那个例子,只是反射的一个用途:查看类型成员信息。接下来的几个章节,我们将依次介绍反射所提供的其他能力

2017-07-14 00:22:26 207

转载 .NET中的反射(1)

引言反射是.Net提供给我们的一件强力武器,尽管大多数情况下我们不常用到反射,尽管我们可能也不需要精通它,但对反射的使用作以初步了解在日后的开发中或许会有所帮助。反射是一个庞大的话题,牵扯到的知识点也很多,包括程序集、自定义特性、泛型等,想要完全掌握它非常不易。本文仅仅对反射做一个概要介绍,关于它更精深的内容,需要在实践中逐渐掌握。本文将分为下面几个部分介绍.Net中的反射:

2017-07-13 22:11:24 412

转载 C#中Action、Func、Tuple、Predicate的使用

Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性。基本涵盖了所有常用的委托,所以一般不用用户重新声明。Action系列泛型委托,是没有返回参数的委托,最多可以有16参数,也可以没有参数;Func系列的委托是有返回值的委托,最多可以有16个参数;元组是C# 4.0引入的一个新特性,编写的时候需要基于.NET Framework 4.0或者...

2017-07-12 09:23:40 440

原创 使用Linq查询数据进行分页时遇到的性能问题

最近需要对客户的系统进行升级,在对一张记录只有7767条记录的表进行分次查询时,每次查询500条,16次查询居然使用了2分钟时间。代码如下:public static List GetList(int pageIndex, int pageSize, out int count) { using (var db = new ClientDBDataC

2017-07-12 00:51:20 2361

转载 LINQ to SQL(全!!!)

LINQ to SQL语句(1)之Where适用场景:实现过滤,查询等功能。说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:1.简单形式:例如:使用where筛选在伦敦的客户var q = from c in ...

2017-07-12 00:20:34 1050

转载 Linq之Take Skip TakeWhile SkipWhile Reverse Union Concat 用法

class Program { static void Main(string[] args) { string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师", "郭靖", "黄蓉" }; //Take()方法:用于从一个序列的开头返回指定数量的元素。

2017-07-12 00:00:15 330

转载 Linq之详解 From Where Select Group Into OrderBy Let Join

1. 概述    LINQ的全称是Language Integrated Query,中文译成“语言集成查询”。LINQ作为一种查询技术,首先要解决数据源的封装,大致使用了三大组件来实现这个封装,分别是LINQ to Object、LINQ to ADO.NET、LINQ to XML。它们和.NET语言的关系如下:     要使用LINQ来编程,首先要学习使用LINQ的子

2017-07-11 23:56:19 801

转载 深入理解动态类型

本专题概要:动态类型介绍 为什么需要动态类型 动态类型的使用 动态类型背后的故事 动态类型的约束 实现动态行为 总结引言:  终于迎来了我们C# 4中特性了,C# 4主要有两方面的改善——Com 互操作性的改进和动态类型的引入,然而COM互操作性这里就不详细介绍的,对于.Net 互操作性我将会在另外一个专题中详细和大家分享下我所了解到的知识,本专题就和大家分享C# 4中的动态...

2017-07-11 23:38:05 2205

原创 Lambda实例

在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。  C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。  有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。  您可使用匿名方法来忽略参数列表。  这意味着匿名方法可转换为具有各种签名的委托。  这对于 Lambda 表达式来说是不可

2017-07-11 17:15:10 346

转载 C# dynamic的使用

dynamic是FrameWork4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性。比如,即使你对GetDynamicObject方法返回的对象一无所知,你也可以像如下那样进行代码的调用,编译器不会报错: dynamic dynamicObject = GetDynamicObj

2017-07-07 17:56:35 694

转载 正则表达式

正则表达式就是一组字符串运算规则,你需要先把元字符记熟,然后就可以随意组合获得你想要的结果。把一些常用的正则表达式背下来也是一种方法,再加以变化获得你想要的结果。正则表达式不需要刻意的去学习,当用到的时候上网搜索一下,基本上你能想到的都可以搜到,但是需要了解一下,这样就可以判断自己搜到的正则表达式是否符合自己的规则。正则表达式很多,学起来的难度也挺大的,但是简单好用,建议用到的时候

2017-07-07 11:45:59 202

CityGML资料,三维数据交换格式

CityGML资料,三维数据交换格式

2022-12-29

CityGML资料,三维数据存储交换

CityGML资料,三维数据存储交换

2022-12-29

CityGML相关资料

CityGML相关资料

2022-12-29

ArcMap Addin 扩展开发

ArcMap拓展开发实习指导书,基于ArcGIS 10.1版本,包含AddinTest源码工程

2018-12-07

Wcf 创建及不同宿主方式(自托管,windows服务,IIS)

Wcf 创建及不同宿主方式(自托管,windows服务,IIS)

2018-08-29

ArcGIS国土2014培训教程

本教程的撰写内容围绕 2014 年度国土资源部组织的信息化会议 中 ArcGIS 专场培训, 重点介绍 ArcGIS 在国土资源信息化建设过程 中的应用,尤其是近年来“ 一张图” 工程,决策支持系统的建设中, 如何有效的将 ArcGIS 新技术应用到国土各部门的实际工作中。 教程包括以下内容:国土数据建库、专题制图、服务发布及管理、 专题应用开发以及新一代 Web GIS 应用于国土云建设的相关介绍, 本教程还附有配套的演示数据及处理工具,供培训人员参会后再使 用。

2016-04-08

NPOI对word和excel文件的输出(全套资料)

包含dll,培训文档,及项目实例,可以不依赖微软插件完成对word、excel文档的输出

2015-09-11

GIS数据库操作(增删改)及元数据讲解

GIS数据库操作(增删改)及元数据讲解 包括空间数据工作空间的访问,表的访问,记录的增删改,字段增减,元数据表的配置等

2015-09-11

LSCommonHelper.dll

ArcGIS数据导入导出 工具类 内容围绕ArcGIS工作空间新建,要素取得、数据转换为主

2015-05-14

南方CASS操作文档

南方CASS7.0操作文档,官方培训教材

2014-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除