標籤:伺服器端 取出 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面試題收錄