最近的文章列表
- C#委托delegate(代理)
- C# 代理实际上类似于C++中的函数指针,因为C#中不存在指针,所以用代理可以完成一些原来在C++中用函数指针完成的操作,例如传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m。但与函数指针相比,delegate有许多函数指针不具备的优点。首先,函数指针只能指向静态函数,而delegate既可以引用静态函数,又可以引用非静态成员函数。在引用非静态成员函数时,delegate不但保存了对此函数入口指针的引用,而且还保存了调用此函数的类实例的引用。其次,与函数指针相比,delegate是面向对象、类型安全、可靠的受控(managed)对象。也就是说,runtime能够保证delegate指向一个有效的方法,你无须担心delegate会指向无效地址或者越界地址。 实现一
- 2011/5/10 Comments:C#
- asp.net禁止页面缓存,适合各种浏览器
- 客户端:<html> <head> <meta http-equiv="Expires" CONTENT="0"> <meta http-equiv="Cache-Control" CONTENT="no-cache"> <meta http-equiv="Pragma" CONTENT="no-cache"> </head>服务器端:Response.Buffer = true;Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);Response.C
- 2011/5/9 Comments:C#
- DALFactory与IDAL的区别
- 业务逻辑层调用IDAL接口是对的,但说这里体现不了接口的优势是错的,这里正是体现接口优势的地方!因为有了DAL层,软件可以轻易移植到不同种类的数据库上运行。不同种类数据库的具体编码不同,所以要分开实现,但无论数据库编码写么编,对于业务逻辑层来说,就是一个作用,保存数据!所以不同种类数据库DAL层都继承自IDAL,这样业务层就不用考虑调用的到底是哪种数据库来保存数据,只要按IDAL规定的方法存了就行。真正去存入数据库的时候,到底存到了哪种数据库里,就看对IDAL进行实例化的时候,生成的是哪种数据库的实例。接口中定义了要用的方法,当调用接口时会根据具体的情况再去调用底层数据访问操作。而现在这个DALFactory就是关键,当BLL层要操作数据库时,DALFactory会根据具体情况再去使用Sql
- 2011/4/29 Comments:C#
- 抽象工厂模式 为什么在BLL层报错“未将对象引用设置到对象的实例”
- 抽象工厂模式 为什么在BLL层报错未将对象引用设置到对象的实例<!--数据访问层程序集名称 --> <add key="Camnpr.DAL" value="Camnpr.com.SQLServerDAL"/> <add key="Bubuol.DAL" value="Bubuol.com.SQLServerDAL" /> <!--实体对象内容缓村的时间(分钟)--> <add key="ModelCache" value="30"/>LZ是不是没有在web.config里配置这些项呀。具体根据自己项目中调
- 2011/4/27 Comments:C#
- ASP.NET中常用的三十三种代码
- .cl{color: rgb(0,128,0); line-height: 18px}.cl128{color: rgb(128,0,128); line-height: 18px}.lh{line-height: 18px}C# code1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open(’*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>") 接收参数: string a = Request.QueryString("id"); string b = Re
- 2011/4/19 Comments:C#
- c#调用c++dll报出System.ExecutionEngineException异常
- 执行引擎错误是致命错误,决不应该发生。此类错误主要是在执行引擎被破坏或丢失数据时发生的。系统会随时引发此异常。在可能的情况下,系统将引发比 ExecutionEngineException 异常能提供更多信息的异常。应用程序不应引发 ExecutionEngineException。ExecutionEngineException 使用值为 0x80131506 的 HRESULT COR_E_EXECUTIONENGINE。有关 ExecutionEngineException 实例的初始属性值列表,请参见 ExecutionEngineException 构造函数。解决方法:public static extern void callCamnprDLL(out byte[] ver);
- 2011/4/12 Comments:C#
- VS2010新建项只有.net framework 4.0 没有.NET2.0 3.0 3.5 的解
- VS2010默认只安装.net framework 4.0,如果要用2.0,3.0,3.5等框架,则需要安装.net framework 3.5 sp1,请看这篇博客:Framework .NET 3.5 Sp1 required for targeting frameworks 2.0, 3.0 or 3.5 (multi-targeting) using Visual Studio 2010Visual Studio 2010 选择.NET 2.0/3.0/3.5框架不能编译的解决办法
- 2011/4/11 Comments:C#
- c#调用c++dll时,结构体长度,占位符定义
- #region 占位符定义 public struct Byte4 { byte b1, b2, b3, b4; } public struct Byte8 { Byte4 dummy1, dummy2; } public struct Byte16 { Byte8 dummy1, dummy2; } public struct Byte32 { Byte16 dummy1, dummy2; } public struct Byte64 { Byte32 dummy1, dummy2; } public struct Byte100 { Byte64 dummy1; Byte32 du
- 2011/4/8 Comments:C#CDLL
- .net dll 不能使用 fixed 语句来获取已固定的表达式的地址
- fixed 语句禁止垃圾回收器重定位可移动的变量。 fixed 语句只在不安全的上下文中是允许的。 Fixed 还可用于创建固定大小缓冲区。fixed 语句设置指向托管变量的指针,并在执行该语句期间固定此变量。 如果没有 fixed 语句,则指向可移动托管变量的指针的作用很小,因为垃圾回收可能不可预知地重定位变量。 C# 编译器只允许在 fixed 语句中分配指向托管变量的指针。unsafe static void TestMethod(){// assume class Point { public int x, y; }// pt is a managed variable, subject to garbage collection.Point pt = new Point();//
- 2011/4/8 Comments:C#
- 不安全代码只会在使用/unsafe编译的情况下出现
- visual studio在项目属性里设置配置属性中的 :生成-允许不安全代码块 为true错误 了解更多关于:unsafe >repath}articles/?type=detail&id=285">不安全代码和指针资料汇编
- 2011/4/8 Comments:C#