这些题目都来源于网络,参考之前的答案,针对每道题做了简单的分析,恳请大家批评指正。
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 }
转载地址:https://blog.csdn.net/weixin_30633949/article/details/97053352 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!