标签:服务器端 取出 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.什么叫应用程序域?
标签:服务器端 取出 delete 调用 names net hand 浏览器 数据
原文地址:http://www.cnblogs.com/mff520mff/p/7419715.html