您的位置:首页 > 编程语言 > ASP

【修订版】C#/ASP.Net 面试题及答案(1)

2010-01-14 18:13 489 查看
这些题目都来源于网络,参考之前的答案,针对每道题做了简单的分析,恳请大家批评指正。

1. 简述 private、 protected、 public、 internal 修饰符的访问权限。
答:本题考察 类的成员的可访问性。

可访问性的关键字有如下5个:

internal:在所属程序集中可以访问。

private:私有成员, 在当前类中可以访问。

protected:保护成员,在当前类及其子类中可以访问。

public:公共成员,完全公开,没有访问限制。

internal protected:在所属程序集或当前类的子类中可以访问。(题目中未提及)
【扩展】

类的修饰符:abstract,sealed,static,unsafe 4个。

abstract:类是抽象的,不能创建类的实例

sealed:类是密封的,不能被继承

static:类是静态的,只有静态成员,没有非静态成员

unsafe:类有非安全的结构,比如指针

2 .列举ASP.NET 页面之间传递值的几种方式。
答:有 querystring,cookie,session,server.transfer,application 5种方式。

【扩展】

1.使用QueryString方式(或称url传值、Response.Redirect传值),这是最简单的方式,因为传递的值在浏览器的url中会显示出来,所以用来传递没有安全要求的值。

发送页面代码:

1 Response.Redirect("index.aspx?username="+txtUserName.Text.Trim());
接收页面代码:

1 if(Request.QueryString["username"]!=null)
2 {
3 strUserName = Request.QueryString["username"];
4 }
2.使用cookie方式,cookie由服务器创建,但是保存在客户端

发送页面代码:

1 HttpCookie userName = new HttpCookie("username");
2 userName.Value = this.txtUserName.Text.Trim();
3 Response.Cookies.Add(userName);
4 Response.Redirect("index.aspx");
接收页面代码:

1 if (Request.Cookies["username"] != null)
2 {
3 strUserName = Request.Cookies["username"].Value;
4 }
3.使用Session变量,session在用户向服务器发出首次请求时被创建,在服务器端,在用户关闭浏览器或异常发生时终止(还有别的session过期情况)。

发送页面代码:

1 Session["username"] = this.txtUserName.Text.trim();
2 Response.Redirect("index.aspx");
接收页面代码:

1 if (Session["username"] != null)
2 {
3 strUserName = Session["username"].ToString();
4 }
4.使用Application变量

发送页面代码:

1 Application["username"] = this.txtUserName.Text.trim();
2 Response.Redirect("index.aspx");
接收页面代码:

1 if (Application["username"] != null)
2 {
3 strUserName = Application["username"].ToString();
4 }
5.使用Server.Transfer方式(或称为HttpContext方式),要传递的变量可以通过属性或方法来获得,使用属性比较容易一些。

发送页面制作一个属性:

1 public string GetName
2 {
3 get { return this.txtUserName.Text.Trim(); }
4 }
发送页面代码:

1 Server.Transfer("index.aspx");
接收页面代码:

1 w = (WebForm4)Context.Handler;
2 strUserName = w.GetName;

3.重写、重载和隐藏三个概念的区别。
答:

重写(override)指用override关键字重新实现基类中的虚方法,在运行过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用。

重载(overload)指多个方法共享一个名字并且拥有相同的返回值,但是拥有不同的参数。

隐藏(new)指用new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该调用哪个类型的方法。

【扩展】

重写实现的是运行时多态,重载实现的是编译时多态。

代码

1 public class FatherClass
2 {
3 public virtual void Method()
4 {
5 Console.WriteLine("FatherClass.Method");
6 }
7 }
8 public class ChildClass : FatherClass
9 {
10 public override void Method()
11 {
12 Console.WriteLine("ChildClass.Method");
13 }
14 }
15 public class NewClass:FatherClass
16 {
17 public new virtual void Method()
18 {
19 Console.WriteLine("NewClass.Method");
20 }
21 }
22 public class OverloadClass
23 {
24 public void MethodA()
25 {
26 Console.WriteLine("MethodA:");
27 }
28 public void MethodA(string str1)
29 {
30 Console.WriteLine("MethodA:"+str1);
31 }
32 public void MethodA(string str1,string str2)
33 {
34 Console.WriteLine("MethodA:" + str1+","+str2);
35 }
36 }
37
38 public static void Main()
39 {
40 FatherClass fcOverride = new ChildClass();
41 fcOverride.Method();
42 FatherClass fcNew = new NewClass();
43 fcNew.Method();
44
45 OverloadClass oc = new OverloadClass();
46 oc.MethodA();
47 oc.MethodA("1");
48 oc.MethodA("1", "2");
49 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: