摘要:1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之间,优先使用 as 操作符 4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if 5.总是为自定义类重载 ToString 方法 6.区别值类型和引用类型 7.使用不可变的值类型(Immu...
阅读全文
随笔分类 - C#,ASP.NET
摘要:1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之间,优先使用 as 操作符 4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if 5.总是为自定义类重载 ToString 方法 6.区别值类型和引用类型 7.使用不可变的值类型(Immu...
阅读全文
摘要:Machine.config1.该文件在Windows目录下\Microsoft.net\framework\[version]\Config\2.为了提高性能,该文件只包含不同于默认值的设置。并且定义了配置文件项可包含的配置节,就像是一个基础的定义。可以使用System.Configuration命名空间中的类读取配置文件3.Configuration元素的主要子元素appSettiongs:包...
阅读全文
摘要:WPF:WPF程序由XAML和CS两部分组成,XAML负责界面生成,CS负责逻辑代码。在VS里创建WPF类型的Windows应用程序时会生成两个文件“"Window1.xaml"主要定义一个Window窗体;App.xaml”主要来定义一个WPF程序,它会生成一个运行于Windows系统的Application对象。Application对象里会有一个传统的Main方法,由...
阅读全文
摘要:c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe 可以反编译ILc:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe 可以编译CS
阅读全文
摘要:Dns类的GetHostName方法可以解析本机计算机名。GetHostByAddress和GetHostByName方法可以取得DNS的相关信息Sockets命名空间提供了Socket、TcpClient、TcpListener、UdpClient、SocketException、NetworkStream几个类:a。Socket实现了Berkeley通信端(Socket)接口,通常不会直接使用...
阅读全文
摘要:判别是否正确使用了三层结构的简单技巧是首先查看一下在界面层和业务层有没有引入System.Data.SqlClient命名空间,如果引用了说明你使用了本该在数据层使用的代码。其次可以看一下三层之间是否是按照规范访问的,三层访问规范是:界面层只能调用业务层,业务层只能调用数据层,数据层谁都不能调用。
阅读全文
摘要:1. 要经常花时间阅读别人写的高品质代码2. 要有选择地阅读代码,还要有自己的目标。是想学习新的模式、编码风格、还是其他3. 要注意特殊的非功能性需求,这些需求也许会导致特定的实现风格4. 在现有代码上工作时,请与作者或维护人员进行必要的协调.5. 在寻找bug时,请从问题的表现形式到问题的根源来分析代码。不要沿着不相关的路径(误入歧途)6. 要充分利用调试器、编译器给出的警告输出、系统调用跟踪器...
阅读全文
摘要:如果Internet上的Web服务器由于和访客之间有无数代理、路由很难获得访客的真实信息,只能获得代理的IP。作为和访客同在一个网段的内网Web服务器就不存在此问题。获得访客IP:lbIP.Text = Request.UserHostAddress;获得访客主机名:IPAddress ip = IPAddress.Parse(Request.UserHostAddress); IPHostEnt...
阅读全文
摘要:消息1:无法在服务器上启动调试(Unable to start debugging on the Web server)
原因1:IIS的应用程序设置并没有使用集成windows认证,打开windows集成认证选项
原因2:检查IIS中的"保持HTTP连接"选项,确保该选项为选中状态
消息2:您没有在服务器启动调试的权限(You do not have permission to debug the server)
阅读全文
摘要:常用控件:文本框TextBox:设置PasswordChar属性的话,可以实现密码输入框效果工具栏ToolStrip菜单栏MenuStrip状态栏StatusStrip滚动条ScrollBar:用于自身没有滚动条的控件进行滚动操作进度条ProgressBar跟踪条TrackBar列表视图ListView:比较复杂,列表项中可以带有图标,如资源管理器树视图TreeView:卡片控件TabContro...
阅读全文
摘要:<?xml version="1.0" encoding="utf-8"?><!-- 注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的 “网站”->“Asp.Net 配置”选项。 设置和注释的完整列表在 machine.config.comme...
阅读全文
摘要:System.IO命名空间下包含了文件输入输出相关的类
BinaryReader/BingarWriter:二进制形式读写
BufferedStream:给另一流上的读写添加缓冲层,无法继承此类
Directory/DirectoryInfo/DirectoryNotFoundException:提供目录操作的静态/实例方法
DriveInfo/DriveNotFoundException:提供驱动器信息
EndOfStreamException:读操作试图超出流的末尾
ErrorEventArgs:
阅读全文
摘要:一般而言,HTTP协议是非状态服务,它不保存任何用户请求信息。直至NetScape开始使用Cookies来保存用户请求信息,Web应用程序有了极大的发展。现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。 下面主要介绍ASP.NET关于客户端状态管理的几种方式。 ASP.NET,提供了Cookies, QueryStrings (URL), Hidden fields, View St...
阅读全文
摘要:刚才刚看完Anders的PDC Talk,感觉C# 4.0的变化不是很大,但是很多改动都方便了用户的使用,有些甚至当初Anders本来不愿意加入的功能最后由于用户的呼声最后还是加进去了(如Optional Parameters),可见Anders对用户的意见还是非常重视的。稍微总结一下,C# 4.0中有下面这些功能: 1. dynamic/IDynamicObject 这个改进使得C#向动态语言又...
阅读全文
摘要:动机: 在软件构建过程中,由于需求的改变,某些类层次结构中常常需要增加新的行为(方法),如果直接在基类中做这样的改变,将会给子类带来很繁重的变更负担,甚至破坏原有设计。 如何在不更改类层次结构的前提下,在运行时根据需要透明的为类层次结构上的各个类动态添加新的操作,从而避免上述问题? 意图: 标识一个作用于某对象结构中的各元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。 p...
阅读全文
摘要:在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态.如果使用一些共有接口来让其他对象得到对象的状态,便会暴露对象的细节实现。我们需要实现对象状态的良好保存与恢复,但同时不会因此而破坏对象本身的封装性。 意图: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。 我们首先看...
阅读全文
摘要:在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同,如何在运行时根据对象的状态来透明的更改对象行为?而不会为对象操作和状态转化之间引入紧耦合? 意图: 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为 public class Context { private State m_Sta...
阅读全文
摘要:致力于一个应该避免编写的方法。GetHashCode()仅仅用在一个地方:在基于hash(哈希)结构的集合中,用来定义key(键值)的hash值,典型的是Hashtable(哈希表)或者Dictionary(字典)容器。因为基类在对GetHashCode()的实现上存在很多问题,所以仅用在一个地方很好。对于引用类型,这也能工作但是效率低。对于值类型,基类的版本经常是不正确的,而且越来越糟。不写Ge...
阅读全文
摘要:快捷键 功能F1打开MSDN帮助Ctrl+R,E 封装字段CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT + J对象浏览CTRL + ALT +...
阅读全文
摘要:调用无返回值的存储过程: [代码]调用无返回值带参数的存储过程: [代码]调用有返回值的存储过程: [代码]对于带参数的存储过程,使用SqlCommandBuilder的静态方法DeriveParameters更简单的生成参数。它可以从在SqlCommand中指定的存储过程中检索参数信息并填充到该SqlCommand对象的Parameters集合里。 这个方法最为常用。 [代码]Windows集成...
阅读全文
|