码迷,mamicode.com
首页 > Web开发 > 详细

.NET面试题收录

时间:2017-08-23 19:57:08      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:服务器端   取出   delete   调用   names   net   hand   浏览器   数据   

1.private、protected、public、internal修饰符的访问权限

   private 私有成员,只有在类的内部可以访问

   protected 保护成员,在类的内部和继承类中可以访问

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

   internal  在同一个命名空间内可以访问

2.ASP.NET页面之间传值得几种方式(Cookie 。Application等)

   1)QueryString

QueryString是一种非常简单的传值方式,可以将传送的值暴露在浏览器地址栏,如果传递对安全性

要求不高或结构简单的数值时,可以使用这个方式,但是传递数组或对象就不能用了

A。使用方法: a、在源页面中构造URL地址

                        b、在源页面使用 Response.Redirect(URL)重定向到上面的URL地址

                        c、才目的页面中使用 Response.QueryString["name"] 取出上面URL地址中传递的值

eg:

 (1)  index.aspx

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  string s_url; 
  s_url = "b.aspx?name=" + Label1.Text; 
  Response.Redirect(s_url); 
}
(2)index2.aspx

   private void Page_Load(object sender, EventArgs e)

   {  

      Label2.Text = Request.QueryString["name"];

   }

2)Session

Session使用简单,不仅能传递简单数据类型,还能传递对象,数据量大小不限制,但是在Session

变量中存储大量的数据会消耗较多的服务器资源。容易丢失。

A。使用方法:a、在源页面中构造Session变量:Session["Name"]=“Value(Or Object)”

                       b、在目的页面使用Session变量取出传递的值。Result=Session["Name"]

B。Session不用时可以销毁,方法是 Session.Remove(“session名”)=====清除一个

                                                        Session.Clear()======清除所有

eg:

index.aspx

private void  Button_Click(object sender,System.EventArgs e)

{

    Session["name"]=Lable.Text;

}

index2.aspx

private void Page_Load(object sender,EventArgs e)

{

    string name;

    name=Session["name"].ToString();

}

3)Servere.Transfer

 这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导

到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的。

ps:比较Server.Transfer和Response.Redirect的区别。

a、Server.Transfer在服务器端完成,所以客户端浏览器中的URL地址是不会改变的;

      Response.Redirect是客户端完成,向服务器端提出新的页面处理请求,所以

      客户端浏览器中的URL地址是会改变的

b、Server.Transfer在服务器端完成,不需要客户端提出请求,减少了客户端对服务器端提出请求。

c、Server.Transfer只能够转跳到本地虚拟目录指定的页面,也就是工程项目中的页面,

     而Response.Redirect则十分灵活,可以跳转到任何URL地址。

d、Server.Transfer可以将前一个页面的各种类型的值传到新的页面;Response.Redirect

      则只能借助URL中带参数或是结合上面四种办法把各种类型的值传到新的页面。

使用方法:

  a、在源页面中使用Page类的Server.Transfer传递页面数据。Server.Transfer("b.aspx","false")

  b.在目的页面中,使用Context.Handler来接收数据:FormerPage formerPage = (FormerPage)Context.Handler; 然后用

formerPage的属性和方法来获取前一个页面的值,或者直接用Context.Items["myParameter "]

eg:

   index.aspx

   public string Name 

{ 
  get{ return Label1.Text;} 
} 
private void Button1_Click(object sender, System.EventArgs e) 
{ 
  Server.Transfer("b.aspx"); 
}

index2.aspx
private void Page_Load(object sender, EventArgs e) 
{ 
  a newWeb; //实例a窗体 
  newWeb = (source)Context.Handler; 
  string name; 
  name = newWeb.Name; 
}
3.C#中的委托是什么?事件是不是一种委托?
委托是一种特殊的引用类型,它将方法作为特殊的对象封装,从而将方法作为变量或参数进行传递,
事件是一种特殊的委托
using System;
namespase delegate
{
delegate void Function(double x,double y) //定义委托
class Program
{
static void Main()
{
Function fun;
double a=2,b=3;
Console.Write("请选择函数:");
int i= int.Parse(Console.ReadLine());
if(i==1)
{
fun=new Function(Add);
                     }
fun(a,b);
}
static void Add(double x,double y)
{
Console.WriteLine("{0}+{1}={2}",x,y,x+y);
}
}

}
该程序首先定义了一个委托类型 Function,注意delete关键字之后需要说明委托的返回类型
(没有返回类型位void)和参数类型,程序主方法首先创建了该类型的变量fun,之后可以将
指定的方法封装到该委托对象,注意方法的参数列表和返回类型都必须和委托的定义保持一致。
C#还允许将方法名直接写在委托赋值表达式的等号右边。eg: Function fun=Add;
4.override(重写)与overload(重载)的区别

   override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,

   重写(重新实现)父类中的方法。不管重写还是覆盖都不会影响父类自身的功能。

   覆盖使用new关键字,重写会改变父类方法的功能即调用子类的功能,覆盖仍调用父类功能

   虚方法,实方法都可被覆盖,抽象方法和接口不可以。

   重写(覆盖)的规则:

   1、重写方法的参数列表与返回值必须完全与被重写的方法的相同

   2、重写方法的访问修饰符大于被重写方法的访问修饰符(public>protected>default>private)

   3、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

   4、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

   5、静态方法不能被重写为非静态的方法(会编译出错)。

   6、父类中被重写的方法必须声明为virtual或abstract类型,子类方法用override关键字修饰,

eg:

    public  class  parent

    {

    public virtual string Function()
{
return "1";
}
}
 public class A : parent
{
public override string Function()
{
return "2";
}
}
public class B : parent
{
public new string Function() //new放在public前面和后面效果一样。且不会编译出错
{
return "3";
}
}
 public class JustForTest
{
public void DoTest()
{
parent p=new parent();
A a = new A();
Parent parent1=new A();
B b = new B();
Parent parent2=new B();

Console.WriteLine(p.Function); //输出1
            Console.WriteLine(a.Function());//输出2
Console.WriteLine(parent1.Function);//输出2
Console.WriteLine(b.Function());//输出3
Console.WriteLine(parent2.Function)//输出1
}
}
注:B b = new parent()编译出错(无法将类型parent隐式转换为B)
overload
重载发生在同一个类中,方法名相同,参数不同,返回类型可以不同的情况。应对不同需求
5.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
C#索引器可以根据任何数据类型进行索引
6.用.NET做B/S的系统,使用几层来开发,为什么这样分层?
一般为三层,数据访问层,业务逻辑层,表示层
数据访问层实现对数据库的增删改查
业务层一般分为两层,业务表现层实现对表示层的沟通,业务规则层实现用户密码的安全等
表示层实现与用户的交互
优点:分工明确,易于调试,具有可扩展性。缺点:增加成本
7.什么叫应用程序域?


 
 
 

.NET面试题收录

标签:服务器端   取出   delete   调用   names   net   hand   浏览器   数据   

原文地址:http://www.cnblogs.com/mff520mff/p/7419715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!