Pages

2010/05/26

[C#] 可為NULL的型別

之前在使用別人寫的資料庫存取元件時,
發現一個小問題,
在資料庫裡可以讓欄位以NULL存放,
若將資料存放在物件屬性中,
將使用得屬性以初始值儲存, (Ex: int型別的變數會存放0)
但這樣有點不太好用,
和實際資料存放情況不符,
必竟有值和沒值還是不一樣的!
最近在看MSDN的文件時,
發現原來可以宣告型別是可以存放NULL的,
這樣就可以改善之前元件的錯誤.
MSDN: 可為 Null 的型別 (C# 程式設計手冊)

使用方式:
public class TypeIsNullable {
    int? a = null;
}

2009/05/13

[IIS] 錯誤: 無法存取 IIS Metabase

將寫好的.net 網頁放至 IIS伺服器上後,
在瀏覽器中瀏覽該網頁時,
出現 "無法存取 IIS Metabase。" 的錯誤時,
可以由 「命令提示字元」 至 "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 下,
執行 "aspnet_regiis -ga ASPNET" 指令,
將 .NET Framework 重新安裝後,
重新啟動IIS,便可從瀏覽器中瀏覽該網頁。

2009/01/07

[SCWCD] POST與GET的不同

GET及POST都是HTML中表單傳送的方式,而兩者有什麼差異呢?
"GET"的特性:
  1. 會顯示於網址列上,如:http://test.web.com/hellowolrd.jsp?name=ping,紅色部分為GET傳遞方式
  2. 有傳遞參數有內容長度限制約255位元
  3. 是冪等(idempotent)的方法,意指多次傳遞參數請求所得到的結果仍時一樣,並不會影響伺服器上的資料內容,(冪等為何物?後面會再加以說明)
"POST"的特性:
  1. 傳遞參數內容放置在傳送資料中,並不會顯示於網址列上
  2. 傳遞參數內容並無限制大小
若資料內容過多或是須要隱藏顯示,建議是"POST"方式傳遞參數。

2008/12/06

[Java] 用Recursion撰寫檔案列表

遞迴Recursion是撰寫程式的小技巧,
讓程式中的方法(function)可自行呼叫方法本身,
這樣的做法可以讓程式內容易讀, 程式內容也會比較簡潔.

2008/11/15

[SQL] Trigger 觸發程序(一)

Trigger 其目的為監控 Table, 當 Table有新增或更新內容時, 可以將已預設儲存的動作予以執行,
故當一個 Table有 insert, update, delete等行為時,
將會自動執行預設的 Trigger行為.

2008/10/17

[Java] "equals()"與"=="

"=="是比較兩參考變數所儲存之值,
若該參考變數為基本資料型態, 會比較其存放之值是否相同, 相同則傳回true, 反之則傳回false.
若該參考變數為物件型態, 會比較該變數是否指向同一物件, 相同則傳回true, 反之則傳回false.

"equals()"為Java類別Object原有之函式, 繼承Object時可依據比較之內容及規則覆寫該方法,
若沒有覆寫equals(), 其比較條件如同"==".
JavaAPI有註明當覆寫equals()時, 必須覆寫hashCode(),
因當兩個物件相等時, 其hash code也必定會相等.
(若沒修改, JVM會隨機產生一組hash code)

[Java] Override 覆寫

當子類別繼承父類別時, 可以透過Override方式改寫父類別的方法,
當使用override修改父類別的方法, 有下列幾點限制:
  1. 方法名稱不能修改.(改了就是新增方法而不是覆寫了!)
  2. 若父類別的方法有丟出例外時, 子類別也必須丟出此例外或該例外之子類別.
  3. 子類別方法所傳回值之型態須與父類別方法一樣. (若更改傳回值之型態, 這樣就是overload了吧!)
  4. 子類別方法之修飾詞權限不得小於父類別. (繼承的用意就是希望孩子變強, 那有變弱的道理!)
  5. 若父類別之方法設定為final, 子類別不能修改該方法. (廢言, 都已經是final怎麼改寫)
  6. 若父類別之方法宣告為static, 子類別不可將其宣告為non-static, 反之亦然.


以下情況皆為重新定義非覆寫:
  1. 修改父類別之靜態方法
  2. 修改父類別之private方法