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

这些题目都来源于网络,参考之前的答案,针对每道题做了简单的分析,恳请大家批评指正。

 

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  =  (WebForm4)Context.Handler;
2  strUserName  =  w.GetName;

 

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

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

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

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

【扩展】

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

ExpandedBlockStart.gif 代码
 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  }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值