1 關於IFramset 分塊的問題
今天搞了半天就為了一個架構的設計。
以前還做過了的,過了幾個月沒有碰忘記了,今天想了半天還沒搞好,最後乾脆裝了DreamWaveMX。— —。
不過還好複習了一遍還是弄清楚了,記錄下來,以免以後又忘記了。
在framset中:
rows = " * " : 通過行分快,也就是從上到下分快,*代表整個
rows = " 100 , 100, * " : 意思是從上到下分為3快,第一快和第二快是100px,第3快占其他所有
同樣的還有個cols屬性,是通過列分快,也就是從左至右分快
cols = " 100,* " : 意思是從左至右,第一塊100px,第二塊占其他所有
Q:您在什麼情況下會用到虛方法。它與介面和抽象有什麼不同。介面與抽象又有什麼不同。舉例說明什麼時候使用介面,什麼時候使用抽象類別
A:
先談Virtual Method
若一個執行個體方法的聲明中含有 virtual 修飾符,則稱該方法為虛方法 (virtual method)。若其中沒有 virtual 修飾符,則稱該方法為非虛方法 (non-virtual method)。
在調用一個虛方法時,該調用所涉及的那個執行個體的運行時類型 (runtime type) 確定了要被調用的究竟是該方法的哪一個實現。在非虛方法調用中,執行個體的編譯時間類型 (compile-time type) 是決定性因素。
虛方法可以在衍生類別中重寫 (override)。當某個執行個體方法聲明包括 override 修飾符時,該方法將重寫所繼承的具有相同簽名的虛方法。虛方法聲明用於引入新方法,而重寫方法聲明則用於使現有的繼承虛方法專用化(通過提供該方法的新實現)。
抽象 (abstract) 方法是沒有實現的虛方法。抽象方法使用 abstract 修飾符進行聲明,並且只有在同樣被聲明為 abstract 的類中才允許出現。抽象方法必須在每個非抽象衍生類別中重寫。
而介面是一個行為的規範或規定; 僅僅承諾了能夠調用的方法
再來談談介面與抽象類別
1.抽象類別是一個不完全的類,需要進一步專業化.介面只是一個行為的規範或規定;
2.介面基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調用的方法;
3.一個類一次可以實現若干個介面,但是只能擴充一個父類
4.介面可以用於支援回調,而繼承並不具備這個特點.
Q
1、重載:多個同名函數同時存在,具有不同的參數個數/類型。
無法以 返回型別 作為重載函數的區分標準。
當編譯器可以很明確從程式前後狀態判斷出意義時沒問題,如int x=f();但因為我們也可以調用一下函數而不賦給其他變數(只為了獲得“副作用”)如f(),這時候編譯器便區分不出來該調用哪個。
2、重寫:父類與子類之間的多態性。子類中某方法與父類有相同的名稱和參數。
Q
資料在記憶體中的儲存位置,取決於它的資料類型,在C#中,分為實值型別和參考型別,實值型別的資料存放區在記憶體中的堆棧中,每個變數或程式都有自己的堆棧,不可以共用一個堆棧地址。當資料一個實值型別的變數傳遞到另一個相同類型的變數時,會在堆棧中分配兩個不同的地址。
而參考型別的資料存放區在記憶體中的堆中,可以不同的變數或程式共同使用同一個位置的資料。當資料從一個參考型別的變數傳遞到另一個相同類型的變數時,只是把這個變數的引用地址傳遞給新的變數,同時引用當前堆中儲存的資料。
比如:類(class),string 屬於參考型別,結構(struct),int屬於實值型別。
Q
A:
靜態變數分為全域靜態變數和局部靜態變數。
全域靜態變數,與全域變數有區別,雖然同為靜態儲存方式,但是全域靜態變數失去了全域的“普遍含義”,它所指的“全域”僅限制在本檔案裡,而全域變數卻是各個檔案可見的
靜態局部變數,與局部變數是有區別的:
1. 儲存方式不同,前者為靜態儲存方式,後者為動態儲存裝置方式;
2. 範圍是一致的,只局限於“模組”或者“程式碼片段”;
靜態局部變數的最大特點就是作用類似於全域變數,而範圍類似於局部變數,在出了某個函數或者程式碼片段後,生命週期繼續延續,與應用程式共生死,當再次回到這個函數或者程式碼片段時,上次走出時的值仍然儲存到了現在,所以一般人用它來做計數器。
另外,還有一些需要說明的,靜態變數作為類的成員變數時,或者類中有靜態成員函數時,這個時候,靜態部分(變數和函數)已經不再屬於對象了,而僅僅屬於類本身了,類沒有執行個體化,那麼靜態函數和靜態變數同樣可以調用;
所以經常在建構函式裡對一些靜態成員變數遞增,來實現對象個數的計數。
例:
class StaticAndInstance
{
static int classVar;
int instanceVar;
static void setClassVar(int i)
{
classVar=i;
}
static int getClassVar()
{
return classVar;
}
void setInstanceVar(int i)
{
classVar=i;
instanceVar=i;
}
int getInstanceVar()
{
return instanceVar;
}
}
public class StaticAndInstanceTest
{
public static void main(String args[])
{
StaticAndInstance m1=new StaticAndInstance();
StaticAndInstance m2=new StaticAndInstance();
m1.setClassVar(1);
m2.setClassVar(2);
System.out.println("m1.classVar="+m1.getClassVar()+"m2.classVar="+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.out.println("m1.InstanceVar="+m1.getInstanceVar()+"m2.InstanceVar="+m2.getInstanceVar());
}
}
結果為:m1.classVar=2 m2.classVar=2
m1.InstanceVar=11 m2.InstanceVar=22
Q
Q
A:
通過url傳遞參數
Q
A:
There are generally four of them:
· Data Store: Where the data resides. This can be a relational database, an XML file, a text file, or some other proprietary storage system.
· Data Access Layer: The code that takes care of retrieving and manipulating the raw data saved in the data store.
· Business Logic Layer: The code that takes the data retrieved by the Data Access tier and exposes it to the client in a more abstracted and intuitive way, hiding low-level details such as the data store's schema, and adding all the validation logic that ensures that the input is safe and consistent.
· Presentation Layer (User Interface): The code that defines what a user should see on the screen, including formatted data and system navigation menus. This layer will be designed to operate inside a web browser in the case of ASP.NET, but some applications might use Windows Forms at this layer.
Q
A:
好象可以直接傳遞。
HyperLink1.NavigateUrl = "Forum.aspx?a=" + "中文";
也可以這樣解碼傳遞
string urlFmt = "Forum.aspx?a={0}";
HyperLink1.NavigateUrl = string.Format(urlFmt, Server.UrlEncode("測試中文"));
Q :Response.Flush()