1、有时候同一功能需要在新的派生类中重新实现逻辑,而不想再使用基类的方法,可使用new关键字来实现隐藏基类成员。
如: public new void sayhello(){}
2、使用sealed关键字修饰的类被称为密封类,此类不能被继承。此关键字也可以修饰方法,则此方法不能被重载。
3、abstract 与 virtual的区别:abstract 用于修饰类和方法,表示抽象类和抽象方法。适用场景为,某类专门设计供别人继承,本身只提供类与方法的声明即可。如果一个类中包含抽象方法则此类必须为抽象类。virtual的适用场景为,某类本身需要包含一些方法的实现,但同时又希望派生类实现部份方法,此时就可以使用virtual关键字修饰方法,称为虚方法。
4、多重继承中,如果一个类实现了两个及其以上的接口,且接口中存在同名情况时,实现方法的名称前不能加PUBLIC关键字,同时,每个方法名前必须加相应的接口名。如:void IFace1.Say(){} 对于不同名称的方法则必须加PUBLIC关键字。同时,在创建实例时,如果调用某个接口的实现,必须将实例强制转换为相应的接口类型。
5、访问修饰符: internal 表示在同一应用程序集内的类可以访问和继承。 Protected internal 表示在同一应用程序集内的自己及其派生类可以访问与继承。
6、using 除了表示引用指令及定义范围外,还可以声明别名如:using aclass = namespance1.Myclass;则以后的aclass都代表namespance1.Myclass
7、==与equals的区别:两都比较方法不一样。==比较是栈中的内容是否相等,页equals比较的是堆中的内容是否相等。
8、readonly 与 const的区别:两者都是用来标识常量的。(1)但初始化赋值方式不同。const在声明的时候就必须赋值,因此,但是固定。而Readonly则是在初始化的过程中赋值,因此不同的初始化可能值就不一样。(2)另外readonly是运行是常数,即在运行时才确定其值。const是编绎时常数,在编绎时就必须确定值。(3)const默认是静态的,readonly不是(4)const 修饰的内容有限制而readonly没有
9、params\out \ref的区别: params做为参数时,之后不允许存在其它的参数,作用,可以用来实现一方法拥有可变参数。out则可用在方法有多个返回值时,在方法内必须为其赋值。ref却必须在进入方法之前为其赋值。
10、class与struct的区别:二者极为相似,但也有区别:(1)class是引用类型,而sturct是值类型。(2)class可以被继承,但struct不可以。(3)内部构造上有区别;
11、Session 超时和莫名丢失的处理
原因:
a.改动Global.asax\web.config\bin目录,导致Web Application重启
b.有些杀毒软件会去扫描Web.config文件,也会导致session失效
c.服务器内存不足
d.程序中有让Session丢失的代码。
e.程序中有框架页和跨域的情况。
解决:
a.修改Web.config中的timeout有效时间
b.建议让网站使用独立的应用程序池
c.IIS设置Session超时时间
d.在应用程序池中打开网站对应的应用程序池属性,将Web数量改为1
e.在主页面里加入一个框架页iframe,设置高和宽为0,在<head>中加入<meta http-equiv="refresh" content="1080">每18分钟刷新一次页面。
12、设置默认焦点:在form标记中设置 defaultfocus="textbox1" 和 defaultbutton="btnok"
13、通过回车文本框焦点自动跳转:在form标记中设置 οnkeydοwn='if(event.keyCode==13 && event.sreElement.type=="text")event.keyCode=9'
14、按快捷键提交(ctr+enter): d在body 中加入οnkeydοwn="save();" 然后定义save方法如下
Function save()
{
If(window.event.keyCode==13 && window.envent.ctrKey)
{
Document.haha.submit();
}
}
15、操作等待效果:
<div id="runing" runat="server" style="z-index:12000; left:0px; width:100%; cursor:wait; position:absolute; top:0px;height:100%;">
<table width="100%" height="100%">
<tr align="center" valign="middle">
<td>
<table width="200" height="120" style=" background-color:Gray; filter:Alpha(Opacity=70); color:White;">
<tr align="center" valign="middle">
<td>
<div id="clocktimes">
</div>
<br />
正在提交,请稍候……
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<asp:Button ID="btnOK" runat="server" Text="提交" OnClick="btnOK_Click" />
在JS中加入脚本:
<script language="javascript">
var times = 0;
function tick() {
times++;
var min = Math.floor(times / 60);
var secend = times - min * 60;
document.getElementById("clocktimes").innerHtml = min + "分" + secend + "秒";
}
</script>
在后台注入脚本即可
btnOK.Attributes.Add("onclick","javascript:document.getElementById('runing').style,visibility='visible';window.setInterval('tick()',1000);");
16、用
<div class="listTable" style="overflow:scroll; ">把GRIDVIEW包起来可以实现内容过长时出现滚动条但在IE6下无效