随笔分类 - C#
摘要:序列化序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。几种序列化技术: 1)二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。 2)XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使用数据而不限制使用该数据的应用程序时,这一点是很有用的。由于 XML 是一个开放式标准,因此,...
阅读全文
摘要:面向对象的特征封装、继承和多态。Polymorphism(多态性)来源于希腊单词,指“多种形态”。多态性的一个重要特征是方法的调用是在运行时确定而不是编译时。在.NET中用于实现多态性的关键词有virtual、override、abstract、interface。virtual实现多态shape类是通用的基类,draw是一个虚方法,每个派生类都可以有自己的override版本,在运行时可以用shape类的变量动态的调用draw方法。 public class Shape { public virtual void Draw() { Console.WriteLine("base c
阅读全文
摘要:我们知道,使用<appSettings>元素可以保存应用程序使用的自定义信息。但是这个元素有两个明显的限制。1. 不能保存结构化信息,如列表或一组相关的设置。2. 不能灵活的处理各种数据类型。这个元素设置只能使用单一的字符串。幸好 ASP.NET 使用一个模块化的高度可扩展的配置模型,它允许你用自定义的节来扩展web.config和machine.config配置文件的结构。但要执行如下所示的3个步骤:1. 确定要在配置文件中保存的信息以及如何把它们组织到元素和特性。2. 对于每个新元素,都创建一个 C#类封装它的信息。3. 在配置文件里注册新节,必须使用 <configSe
阅读全文
摘要:IntroductionOne of the wonderful features of .NET has been its XML configuration features. In the days of .NET 1.x, common application settings, database connection strings, ASP.NET web server configuration, and basic custom configuration data could be stored in a .config file. Custom configuration
阅读全文
摘要:private void SaveThumbnail(Bitmap originBitmap, int width, int height, string directory, string filename, string extension){ var physicalPath = directory + filename + extension; using (var newImage = new Bitmap(width, height)) { using (var graphic = GetGraphic(originBitma...
阅读全文
摘要:IDE:VS2010语言:C#异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项。。。一般是由于目标程序的目标平台与其某一依赖项的目标编译平台不一致导致,把所有的项目都修改到同一目标平台下(X86、X64或AnyCPU)进行编译,一般即可解决问题。
阅读全文
摘要:一、场景:需要将有一定格式的File里的内容读取到已经定义的类中,譬如一个二进制文件里的内容读取到一个新的DataStructure里面。1. File不是很大,一次将所有内容Load到内存中,不会占用太多Memory;2. 二进制文件无法直接反序列化成一个Object,需要一个映射才能完成转换.二、为什么不用FileStream:首先,我们来看一下FileStream的代码以及原理:FileStream fs = new FileStream(binaryFilePath, FileMode.Open, FileAccess.Read);Encoding enc = Encoding.ASC
阅读全文
摘要:在日常编码工作中,我们追求高效的代码。需要的是高性能可重用的代码,而非重复的代码。那么泛型则显得尤为方便.其显著的特点是重用代码,保护类型和提高性能.并且在泛型使用过程中减少装箱操作.泛型可以用途广泛,可根据需求创建泛型接口,泛型委托,泛型类,泛型方法,泛型集合.但是却不能创建泛型枚举!下面认识下什么是泛型,以及泛型有哪些类型和优点.最后依旧采用小实例的演练走进泛型的世界.什么是泛型?泛型是类型参数化以达到代码复用,提高软件开发效率和提高性能的数据类型.System.Collections.Generic命名空间下包含大量泛型集合和泛型集合类.通常可定义为:public class MyCla
阅读全文
摘要:从不出错的软件从某种程度上讲是不可能的! 和普通人的观念相反,创造可信赖的,健壮的软件并不是一件不可能的事情。大部分的商业软件,在长时间可以无重大故障的工作,但它们并非没有任何的错误,只是拥有低出错率,你可以迅速理解出错原因然后快速搞定它,并且,它不会因为外部错误而毁坏数据。软件中有错误是可以原谅的,甚至是可以预料到的;不可原谅的是您无法解决一个复发的错误,仅仅是因为您没用足够的信息。 另外,假如希望成功避免发生错误,就必须要求开发人员正确对待错误。做好最坏的打算 所有代码的书写,你应该认为,它是会发生错误的。假如太过于相信自己,往往会导致错误没有被处理,因此也就无法或者非常困难得去获得错误的
阅读全文
摘要:概念.net 支持Xml文档与.net 类之间无缝双向转换。当应用程序规模变大后,要想程序变得灵活,可配置元素也会变得越来越多。应用程序根据xml文档配置也就自然而然的事。本文的目的也就讲解xml文档与.net 对象通过xml标签的对应关系,以及xml序列化出现问题后如何解决。基本的序列化元素[XmlRoot(“ElementName”)]:对应xml文档的根元素.Xml Segment1<?xml version="1.0" encoding="utf-8" ?><StudentCollection></StudentCo
阅读全文
摘要:C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 图1:类图 下面通过实例来看下每个类的使用。 一、File类 File中提供了许多的静态方法,使用这些静态方法我们可以方便的对文件进行读写查等基本操作。 1、读文件?// 摘要:打开一个文件,将文件的内容读入一个字符串,然后关闭该文件。 public static byte[] ReadAllBytes(string path); // 摘要: 打开一个文本文件,读取文件的所有行,然后关闭该文件。...
阅读全文
摘要:其中一个解决办法是数据库连接地址中增加 enlist=false<add name="NorthWind" connectionString="server=.;database=NorthWind;Uid=sa;Pwd=123456;enlist=false" providerName="System.Data.SqlClient" />
阅读全文
摘要:如果在MasterPage使用失败//前台JS调用后台类方法前注册AjaxPro.Utility.RegisterTypeForAjax(typeof(MasterPage),this.Page);而不是AjaxPro.Utility.RegisterTypeForAjax(typeof(MasterPage));
阅读全文
摘要:1.动态调用WebService?解决方案:添加动态调用WebService类WebServiceHelper;代码如下:using System.Collections.Generic;using System.Web;using System.Net;using System.Web.Services.Description;using System.Text;using System.IO;using System.CodeDom;using Microsoft.CSharp;using System.CodeDom.Compiler;/// <summary>///WebS
阅读全文
摘要:/// <summary> /// 取得网站的根目录的URL /// </summary> /// <returns></returns> public static string GetRootURI() { string AppPath = ""; HttpContext HttpCurrent = HttpContext.Current; HttpRequest Req; if (HttpCurrent != null) { Req = HttpCurrent.Request; string UrlAuthority =
阅读全文
摘要:有时候在获取共享目录下的文件是发现该文件不可用,出现这种情况可能是该文件正在上传,还没有完全上传结束。 因此需要判断一下该文件是否可用 public static bool IsFileCanUse(string filepath) { try { File.Move(filepath, filepath); return true; } catch { return false; } }reread:if(FileHelper.IsFileCanUse(filefullpath)==false){goto reread;}
阅读全文
摘要:string straa = ReadFile(file.FullName, FileAccess.Read, FileShare.None); private string ReadFile(string strFilePath,FileAccess fileAccess, FileShare fileShare) { try { FileStream fs = new FileStream(strFilePath, FileMode.Open, fileAccess, fileShare); var buffer = new byte[fs.Length]; fs.Position = 0
阅读全文
摘要:先看示例:static void Main(string[] args) { int? aa=null; Console.WriteLine(aa ?? -1); Console.Read(); }这里定义了一个可空的整型aa,并给它赋值为null,然后输出。 一个问号表示这个类型可以为null,2个问号表示这个类型如果为空的话,给此类型赋予问号后面的值.static void Main(string[] args) { int? aa=null; ...
阅读全文
摘要:问题描述:在最近的windows程序中,由于实现了winform程序点击窗口的关闭按钮,不直接退出程序,而是将程序最小化到托盘中,这样当程序没有退出之前,直接关机会导致关机不能正常进行。 问题原因:操作系统会在用户点击关机后,发送一个关闭的消息到当前运行的应用程序,这个消息的ID号问0x11,这样当应用程序接受到消息后就会关闭自身,然后操作系统就可正常关闭了。但是我们在实现了上面的功能后,会在FormClosing事件中添加一段代码,?e.Cancel = true; //最小化到托盘 NormalToMinimized(); 这样我们虽然实现了功能,但是在接受到操作系统发送来的关闭窗口的..
阅读全文