吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

随笔分类 -  C#语言

1 2 3 4 下一页

.net 调用webservice 总结
摘要:最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice 。我们都知道,调用webserivice 最简单的方法就是在 "引用" 那里点击右键,然后选择"引用web服务",再输入服务地址。确定后,会生成一个app.config 里面就会自动生成了一些配置信息。现在正在做的这个项目就不能这么干。后来经过一番搜索,就找出另外几种动态调用webservice 的方法。废话少说,下面是webservice 代码View Code using System;using System.Collections.Gene 阅读全文

posted @ 2012-09-03 22:41 _eagle 阅读(49026) 评论(6) 推荐(20) 编辑

C#基础加强三:Dispose() 和 Close() 和 Finalize() 的区别
摘要:.net内存回收与Dispose﹐Close﹐Finalize方法一. net的对象使用一般分为三种情况﹕1.创建对象2.使用对象3.释放对象二.创建对象1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象2.变量类型宣告(declare),如﹕FileStreamfs这行代码会在当前的变量作用域空间(栈或堆)里建立一个叫做fs的变量﹐至少四个字节吧(因为要存一个对象的地址)3.初始化对象对象在使用(调用其方法或属性)前﹐必须进行初始化。如﹕fs=newFileStream(@"C:\test.txt",FileMode.OpenOrCreate);这行代码会分成3个步骤 阅读全文

posted @ 2012-02-24 23:22 _eagle 阅读(3983) 评论(3) 推荐(1) 编辑

C#基础加强二:const和readonly深入研究
摘要:readonly和const都是用来标识常量的[1]。const可用于修饰class的field或者一个局部变量(local variable);而readonly仅仅用于修饰class的field。const常量的值必定在编译时就已明确并且恒定的;而readonly常量却有一点不同,那就是其值可以在运行时编译,当然,它也必须遵守作为常量的约束,那就是值必须恒定不变。const常量必须在声明的同时对其进行赋值,并且确保该值在编译时可确定并恒定;而readonly常量则可以根据情况选择在声明的同时对其赋予一个编译时确定并恒定的值,或者将其值的初始化工作交给实例构造函数(instant const 阅读全文

posted @ 2012-02-22 22:50 _eagle 阅读(557) 评论(0) 推荐(0) 编辑

C#基础加强一:Equals()和运算符==区别
摘要:对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。 ==操作比较的是两个变量的值是否相等。 equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用。 对于值类型的比较,这里就不做描述了,下面讨论引用类型的比较:首先我们看一段程序usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSyste 阅读全文

posted @ 2012-02-22 01:14 _eagle 阅读(390) 评论(0) 推荐(0) 编辑

C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
摘要:1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中OCP(开放封闭原则),我们使用接口,而不需要关心他的具体实现,具体 阅读全文

posted @ 2012-02-20 23:41 _eagle 阅读(331) 评论(0) 推荐(2) 编辑

字符串常见操作
摘要:字符串常见操作(1)取字符串长度 <string>.Length;(2)字符串转为比特码 GetBytes(<string>)(3)字符串相加 推荐StringBuilder sb = new StringBuilder();sb.Append(<string>);(4)截断字符串的一部分 变量.SubString(起始位置,截取位数);(5)查指定位置是否为空字符 char.IsWhiteSpace(字符串变量,位数);(6)查字符是否是标点符号 char.IsPunctuation(‘字符’);(7)把字符转化为数字,查代码点 (int)’变量’(8)把 阅读全文

posted @ 2012-02-19 21:35 _eagle 阅读(347) 评论(0) 推荐(1) 编辑

对象序列化(五):应用实例->大批量复制对象
摘要:本日记介绍序列化技术在实际开发中的用武之地。在了解了对象序列化与反序列化的方法之后,自然想到可以使用它来实现对象复制。当序列化技术用于对象复制时,我们不将其序列化到文件中,而是将其序列化到内存流中,通过反序列化即可“批量克隆”大量的对象。示例:using System;using System.Collections.Generic;using System.Text;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization;using System.IO;namespace 阅读全文

posted @ 2012-02-14 23:50 _eagle 阅读(704) 评论(0) 推荐(0) 编辑

对象的比较与排序(七):对泛型列表进行排序和搜索:Comparison<T>和Predicate<T>的应用
摘要:前面说到,我们可以使用 IComparer<T> 和 IComparable<T> 接口比较两个对象,然后对该类型的对象列表排序。现在我们来介绍另两个委托可以来用排序和搜索列表先总结一下前面的内容:MSDN上List有如下的sort重载:如果调用无参的sort()方法,那么要求集合中的元素要实现 System.IComparable 接口,否则此方法会抛出InvalidOperationException异常。如果集合的元素没有实现IComparable接口,则可以调用Sort(IComparer<T>),这时我们要创建一个类实现IComparer接口作为比 阅读全文

posted @ 2012-02-03 17:07 _eagle 阅读(1380) 评论(0) 推荐(0) 编辑

对象的比较与排序(六):实现集合类Sort自定义排序
摘要:转自http://www.cnblogs.com/anytao/archive/2009/04/12/anytao_devstory_03_customcomparison.html对集合元素进行排序是经常发生的事情,事实上大部分的集合类型都默认实现了Sort方法,进行其元素的排序操作。例如List<T>集合的Sort方法有:public void Sort();public void Sort(Comparison<T> comparison);public void Sort(IComparer<T> comparer);public void Sort 阅读全文

posted @ 2012-02-03 17:03 _eagle 阅读(1382) 评论(0) 推荐(0) 编辑

对象的比较与排序(五):C#运算符重载
摘要:c#里的运算符重载是个不常出现的应用,同时也是个好玩的东西。我们可以使用他来实现这样的需求:当一个订单与另外一个订单相加形成一个新的订单。新订单的货物为两个订单的货物的并集,总价为两个订单的总价和。下面实现看看先做个辅助的货物类publicclassMerchandise{publicintCount{get;set;}publicstringName{get;set;}publicdoubleUnitPrice{get;set;}}然后来实现订单类publicclassOrder{publicdoubleTotalPrices{get;set;}publicList<Merchandi 阅读全文

posted @ 2012-02-03 16:59 _eagle 阅读(527) 评论(0) 推荐(0) 编辑

对象的比较与排序(四):对象的相等判断Equals和IEquatable<T>
摘要:本节覆盖了以下知识点:一、Object.Equals()方法;二、“==”,“!=”运算符重载;三、IEquatable<T> 接口。一、重写Equals方法。众所周知,Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等。Object的Equals的默认实现比较的是两个对象的引用等同性。而Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性。也就是说,在C#里,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性。当然,这并不总能满足我们的要求。所以每当我们更在意引用类型的逻辑等同性的时候,我 阅读全文

posted @ 2012-02-03 16:50 _eagle 阅读(901) 评论(0) 推荐(0) 编辑

对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
摘要:1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。2:IComparable和IComparer 这两个接口上一日记已经介绍过,现在用一实例再次讲解一次 当我们创建了自己的实体类,如Student,默认想要对其按照年龄进行排序,则需要为实体类实现IComparable接口。 class Student:IComparable { public string Name { get; s 阅读全文

posted @ 2012-02-03 00:40 _eagle 阅读(1668) 评论(2) 推荐(0) 编辑

对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类
摘要:在默认情况下,对象的Equals(object o)方法(基类Object提供),是比较两个对象变量是否引用同一对象。我们要必须我自己的对象,必须自己定义对象比较方式。IComparable和ICompare 接口是.net framework中比较对象的标准方式,这两个接口之间的区别如下:1. IComparable 在要比较的对象的类中实现,可以比较该对象和另一个对象。2.IComparer 在一个单独的类中实现,可以比较任意两个对象。一般情况下,我们使用 IComparable 给出类的默认比较代码,使用其他类给出非默认的比较代码。一、IComparable提供了一个方法int Comp 阅读全文

posted @ 2012-02-03 00:22 _eagle 阅读(1214) 评论(0) 推荐(0) 编辑

对象的比较与排序(一):类型比较和值比较
摘要:一。类型比较1.GetType() 方法,所有的类都从system.object 中继承了这个方法,这个方法和typeof()运算符一起使用,就可以确定对象的类型if(myObj.GetType()) == typeof(MyClass){ //myObj是对象名,MyClass是一个类名}2. is运算符(平时用得多,不再叙述)二。值比较1.运算符重载2.使用 IComparable 和 IComparer 接口。它们可以用标准的方式定义比较对象的过程。也是对集合中的对象排序的一种绝佳方式。接下来的两篇日记会详细说明 运算符重载 和 IComparable 、 IComparer 接口 阅读全文

posted @ 2012-02-02 23:59 _eagle 阅读(646) 评论(0) 推荐(0) 编辑

异步编程模式(六):基于事件的异步调用模式
摘要:前一个日记介绍了以 WebResponse 为代表的支持IAsyncResult 异步调用模式的组件,.NET基类库中有部分组件实现 了另一种异步模式,这就是"基于事件的异步模式(EAP模式)"。实现 了EAP模式的最典型组件是WebClient。WebClient定义了以下两个同步方法用于从WEB上下载文件:public void DownloadFile(string address, string fileName);public void DownloadFile(Uri address, string fileName);为了实现异步调用,WebClient又定义 阅读全文

posted @ 2012-02-01 15:06 _eagle 阅读(2427) 评论(1) 推荐(3) 编辑

异步编程模式(五):实现 IAsyncResult 异步调用模式的组件
摘要:在.net 基类型库中,有一些现有的组件直接实现了 IAsyncResult 异步调用设计模式,这些组件通常同时提供某个方法的同步与异步调用形式。以system.net 命名空间中的 WebRequest 为例,如上图所示:有以下规律。1.凡有一个 "BeginXXX"的,一定有一个"EndXXX"方法相对应。2.每组"BeginXXX / EndXXX",一定有一个对应的 "XXX"方法。3."EndXXX" 方法与对应的同步方法 "XXX"的返回值类型相同。注意一下&qu 阅读全文

posted @ 2012-02-01 13:52 _eagle 阅读(595) 评论(0) 推荐(0) 编辑

异步编程模式(四):异步调用中的异常与任务同步
摘要:在上一示例中,如果用户输入了一个不存在的文件夹,会直接抛异常,那么在异步中,如果出现异常了,是什么机制来处理的呢。由于发生异常的代码与调用代码位于同一个线程中,因此当异常发生时,计算机会中当前线程的执行流程,转去执行异常处理代码。如果异常是在异步调用的过程中抛出的,调用者线程与执行异步调用 的线程不是同一个,那又该怎样处理?1、当一个异步调用的方法抛出一个异常,CLR会捕获它,当启动异步调用的线程(称为调用者线程)调用 EndInvoke 方法等待异步调用线束时,CLR会将此异常再次抛出,这样,调用者线程即可捕获它。2、如果在调用BeginInvoke 方法启动异步调用时提供了一个回调方法,则 阅读全文

posted @ 2012-01-19 20:02 _eagle 阅读(841) 评论(0) 推荐(0) 编辑

异步编程模式(三):等待异步调用的完成
摘要:当程序启动一个异步调用之后,调用者线程必须有一种方法能知道此调用的执行情况,并且在这一调用执行完毕之后,取回执行结果。可以有以下二种方法:一、使用轮询现在我们来改造上一节的示例程序。我们可以在程序执行异步调用的过程中,让计算机每隔一段时间向控制台输出一个小点,告诉用户搜索工作正在进行中,从而可以大大改善程序的用户友好性。示例程序:namespace AsyncCalculateFolderSize2{ class Program { //计算指定文件夹的总容量 private static long CalculateFolderSize(string ... 阅读全文

posted @ 2012-01-19 19:50 _eagle 阅读(4048) 评论(0) 推荐(0) 编辑

异步编程模式(二):基于委托的异步编程模式
摘要:上一节日记中,项目所展示的异步编程模式到底是怎么实现的?上一节代码中定义了一个委托:public delegate long CalculateFolderSizeDelegate(string FolderName);经过编译器,在编译上述委托语句时,会自动产生以下的类模板:public sealed class CalculateFolderSizeDelegate: System.MulticastDelegate{ public CalculateFolderSizeDelegate(Object target , int methodPtr){.......} publi... 阅读全文

posted @ 2012-01-19 17:22 _eagle 阅读(544) 评论(0) 推荐(0) 编辑

异步编程模式(一)
摘要:.net 的异步编程技术主要分为两个块:1、使用IAsyncResult 的异步编程模式。2、基于事件的异步编程模式。C#编译器会为每个委托生成支持异步执行的 BeginInvoke / EndInvoke 方法,从而将委托和异步编程紧密联系起来了。当同步执行程序时,如果执行到需要执行较长时间的代码时,用户必须等待,也会认为程序已经卡死或死机了。同步程序的示例代码如下:namespace CalculateFolderSizeNoAsync{ class Program { //计算指定文件夹的总容量 private static long Calcul... 阅读全文

posted @ 2012-01-19 16:47 _eagle 阅读(919) 评论(1) 推荐(1) 编辑

1 2 3 4 下一页
点击右上角即可分享
微信分享提示