1>构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
2>string[] ss=Enum.GetNames(typeof(Color));
byte[]
bb=Enum.GetValues(typeof(Color));
3>asp.net服务端缓存
1页面缓存
2数据源缓存 3自定义缓存 后台Cache[""]
缓存依赖:
1文件缓存依赖 的摧毁依赖于文件的改变
2数据库缓存依赖
轮询机制framework检查 通知机制sqlserver通知
1
你在哪里用到过反射,为什么需要用它,举例说明?
服务器软件,访问动态页面的时候,根据路径,推断类名,反射类的对象,调用对象的方法 IHTTPHandler
page pageobj as IHTTPHandler
各个动态页面都实现IHTTPHandler接口,就可以动态访问每个动态页面,而不需在程序中写死,用到了多态
动态菜单
实体类与xml转换的时候,PropertyInfo[]获得实体类的类型
private static List<T> XmlToObjList<T>(string xml, string
headtag)
where T :
new()
{
List<T> list = new
List<T>();
XmlDocument doc =
new XmlDocument();
PropertyInfo[]
propinfos = null;
doc.LoadXml(xml);
//XmlNodeList
nodelist =
doc.SelectNodes(headtag);
XmlNodeList nodelist =
doc.GetElementsByTagName(headtag);
foreach (XmlNode node in nodelist)
{
T entity
= new T();
//初始化propertyinfo
if (propinfos ==
null)
{
Type objtype =
entity.GetType();
propinfos =
objtype.GetProperties();
}
//填充entity类的属性
foreach (PropertyInfo propinfo in
propinfos)
{
//实体类字段首字母变成小写的
string name = propinfo.Name.Substring(0, 1) + propinfo.Name.Substring(1,
propinfo.Name.Length -
1);
XmlNode cnode =
node.SelectSingleNode(name);
string v =
cnode.InnerText;
if (v !=
null)
propinfo.SetValue(entity, Convert.ChangeType(v, propinfo.PropertyType),
null);
}
list.Add(entity);
}
return
list;
}
2你知道异常怎么处理么?
public
myException(string msg):base(msg){}自定义异常类
catch得时候浪费性能,后面的代码继续执行, new
Exception给上层接收,后面的代码不执行
3你知道网页为什么要用base64传输么?
1.加密:加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即可。
2.算法的复杂程度和效率:基于1中的目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email,而并不是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。
3.网络传输:在网络数据传送过程中,由于历史原因,只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须考虑!
4你知道asp.net页面启动时加载javascript,一级后台调用javascript,前台调用后台代码么?
后台写javascript:
Page.ClientScript.RegisterStartupScript(this.GetType(),
"a", "function aa(){<script>alert(‘!‘);</script>}",
true);
Page.ClientScript.RegisterStartupScript(this.GetType(), "a",
"<script>alert(‘!‘);</script>", true);
Button1.Attributes["a"] =
"aa()";
Page.ClientScript.RegisterStartupScript 与
Page.ClientScript.RegisterClientScriptBlock 之间的区别
RegisterStartupScript 方法是将
JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form>
的前面。RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form>
的紧后面
原文:http://www.cnblogs.com/shenqiboy/p/3551525.html