一。继承
1.构造函数和析构函数不能被继承
if(子类没有自定义构造函数)
{
if(基类没有自定义构造函数)
{
用子类定义对象时,先自动调用基类的默认构造函数,再调子类的默认构造函数。
}
else if(基类有自定义无参构造函数)
{
用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的默认构造函数。
}
else
{
用子类定义对象时,编译提示没有默认构造函数可用
}
}
else if(子类自定义构造函数但没有调用基类的某个构造函数)
{
if(基类没有自定义构造函数)
{
用子类定义对象时,先自动调用基类的默认构造函数,再调子类的自定义构造函数。
}
else if(基类有自定义无参构造函数)
{
用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的自定义构造函数。
}
else
{
用子类定义对象时,编译提示没有默认构造函数可用
}
}
http://blog.sina.com.cn/s/blog_64d57e710100n24f.html
2.派生类只能从一个类中继承,可以通过接口多继承
3.子类不能从静态static方法中调用base.<父类方法名>来调用父类的方法,在静态方法中都不能用base,this 因为它们是类的实例
4.类中有抽象方法(没有“{ }”函数体)时,类必须声明为抽象类,子类不是抽象类时,必须用override重写实现,如果不想在父类中实现也不想声明为抽象类,则把办法声明为虚函数virtual(必须声明函数体体{},如果没有派生类重写该函数,则它可能是原始函数)
--abstract,virtual,override http://www.cnblogs.com/akwwl/archive/2012/08/03/2622026.html
5.多接口继承,有相同的方法名称时,派生类实现方法不能加public等关键字,方法前边必须冠以相应的接口名称。
对于不同名称的方法,必须用public标识
6.public 公有访问。不受任何限制。
private 私有访问。不允许继承,只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于程序集内访问,其他不能访问。
protected internal 内部保护访问。只限于本程序集或是子类访问。
委托与事件:http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html
二。错误异常
1.catch 中显示添加return。不影响finally的执行,在finally中使用break,continue、return都是非法的。
2.asp.net页面跟踪,在页面顶部添加Trace=“true”;应用程序级跟踪,在web.config中添加<trace enable="true"/>,通过根目录/Trac.axd查看。
转自:http://www.cnblogs.com/chinhr/archive/2007/06/26/795947.html
a.页面级别错误处理,在page_error事件中添加处理代码,通过Server.GetLastError()获取当前页面错误。
String message = "<font face=verdana color=red>"
+ "<h4>" + Request.Url.ToString() + "</h4>"
+ "错误信息:" + Server.GetLastError().ToString() + "<br/>"
+ "</font>";
Response.Write(message);
Server.ClearError();//注意清除异常
}
b.应用程序级的错误事件中,错误处理方式如下:global.asax文件中的application_error中添加处理 逻辑,可添加其它操作,如写入windows事件日志,发邮件给管理员,将错误信息写入数据库。具体如下:
{
String Message = "\n\nURL:\n http://localhost/" + Request.Path
+ "\n\nMESSAGE:\n " + Server.GetLastError().Message
+ "\n\nSTACK TRACE:\n" + Server.GetLastError().StackTrace;
//写入windows事件日志
String LogName = "Application";
if (!EventLog.SourceExists(LogName))
{
EventLog.CreateEventSource(LogName, LogName);
}
EventLog Log = new EventLog();
Log.Source = LogName;
Log.WriteEntry(Message, EventLogEntryType.Error);
}
c. web.config中,自定义错误信息。将应用程序配置为不向远程用户显示错误
<error statusCode="404" redirect="NoSuchPage.aspx"/>
<error statusCode="403" redirect="NoAccessAllowed.aspx"/>
</customErrors>
注:将 mode 属性设置为 RemoteOnly(区分大小写)。这就将应用程序配置为仅向本地用户(您和开发人员)显示详细的错误。 不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便
不向远程客户端显示应用程序的详细信息。
"Off" 始终显示详细的 ASP.NET 错误信息。
(可选)包括指向应用程序错误页的 defaultRedirect 属性。
(可选)包括将错误重定向到特定页的 <error> 元素。例如,您可以将标准 404 错误(未找到页)重定向到您自己的应用程序页。
3. javascript客户端脚本调试:浏览器-工具-internet选项-高级-取消勾选禁用脚本调试。
4.winForm程序用线程异常事件和委托来处理错误异常:http://www.cnblogs.com/eagle1986/archive/2012/02/21/2362361.html