Plurk FaceBook Twitter 收進你的MyShare個人書籤 MyShare
  顯示內嵌語法

旗標技術通訊電子報
內容提供:旗標出版公司

旗標技術通訊電子報

第128期 2001.12.07

報主報報:
一年一度的資訊月開始囉!!
台北 12/1~12/9
台中 12/14~12/19
高雄 91/1/6~1/14詳情請看資訊月網站


PCDIY PartitionMagic 7 中文版玩家實戰
產品編號:F657A
全彩印刷
定價:320元
施威銘研究室 著
本期書摘--認識 Partition Magic 7 中文版
PartitionMagic 7.0 新增功能

1.支援 Windows XP 作業系統

PartitionMagic 7.0 已經通過微軟認證, 可以在 Windows
XP 平台上正常執行. 不過要注意的是, PartitionMagic 7.0 
的使用權限設定為電腦系統管理員, 因此必須已具備此權限
的身分登入才能順利安裝, 執行.

2.允許合併 NTFS 分割區

在此版本中新增了合併 NTFS 格式分割區的功能, 只要相鄰兩個 
NTFS 分割區, 其檔案系統版本叢集大小相同就可以進行合併.

3.整合 Windows 的『磁碟重組工具』

硬碟在經過長期使用後會產生『段離(fragment)』現象, 導致讀
取硬碟資料的時間增長, 間接也會影響到 PartitionMagic 的作
業時間, 唯一的解決知道是利用磁碟重組成是重組(defragment)
硬碟. PartitionMagic 7.0 整合了 Windows 的磁碟重組工具
, 可以在其作業環境下直接進行硬碟重組, 以加速作業的執行.

4.支援 80 GB 與 USB 外接式硬碟

PartitionMagic 7.0 支援新款的超大容量硬碟, 最大可支援到 
80 GB. 另外, 使用 USB 外接式硬碟, PartitionMagic
7.0 也可以正常識別, 操作!!

請特別注意:PartitionMagic 並不支援 Windows NT 
Workstation 3.51 和 OS/2 !這兩種作業系統的使用者, 就只
能在 DOS 環境下執行 DOS 版的 PartitionMagic.

儘管 PartitionMagic 能支援 Windows 2000 Professional,
Windows NT Workstation 4.0 等作業平台, 但仍無法在伺服器
(server)下執行. 若有這方面的需要, 可直接購買 Server 版
的 ServerMagic 來使用.


-- 待續 
.........................................................................................


C# 程式設計
產品編號:F8333
定價:580元
黃昕暐 譯
本期書摘--改良列舉器

在前一小節中的列舉器有兩個缺點。
首先, 這個列舉器不能在編譯時期確認型別的正確性, 而必
須留待執行時期才能確認, 如果您撰寫這樣的程式:

IntList intList = new IntList();
intList.Add(55);
//
foreach (string s in intList)
{
}

其中的錯誤就沒有辦法在編譯時期偵測出來, 但是在執行時
會引發例外。編譯器之所以沒有辦法檢查出這種錯誤, 是因
為 IEnumerato.Current 的型別是 object, 而由 object 
轉型為 string 卻是合法的動作。

Current 是 object 型別的作法還會引發第二個問題, 就是
當傳回資料值型別時會進行裝箱的動作, 可是這顯然是無端
的浪費, 因為 IntListEnumerator.Current 會將 int 裝箱
, 但是一經過屬性取得後就又立即拆箱了。

為了解決這兩個問題, C# 在處理列舉器時採用了樣式比對的
方式, 而不是嚴格要求實作完全相符的介面。C# 並不要求您
實作 IEnumerable 介面, 只要實作有 GetEnumerator ()函
式即可, 而且這個函式也不必要傳回一個 IEnumerator 物件
, 而可以傳回特定類別的物件作為列舉器, 只要這個物件實
作有 MoveNext ()、Reset ()、以及 Current, 而且 
Current 也不必是 object 型別。

有了這樣的調整後, 嚴格型別的集合類別就可以在編譯時期
檢查型別的正確性, 而資料值型別也不再需要裝箱了。要為
剛剛的範例加上這樣的修改並不難, 首先介面名稱已經從類
別實作的清單中移除了, 而 IntList.GetEnumerator () 函
式也改成這樣:

public IntListEnumerator GetEnumerator()
{
  return(new IntListEnumerator(this));
}

而IntListEnumerator.Current也只要小小的修改:

public int Current
{
	get
	{
		if (revision != intList.Revision)
			throw new InvalidOperationException
	("Collection modified while enumerating.");
		return(intList[index]);
	}
}

這樣就完成了。

不過,還有一個問題。由於實作列舉器的標準方式還是透過
IEnumerable 以及 IEnumerator介面, 所以依循這個標準的
語言就沒有辦法列舉 IntList 集合了。

解決的方法是以強制實作介面1 的方式實作這兩個介面, 
也就是說, 為 IntList 強制實作 
IEnumerable.GetEnumerator ()函式:

public IEnumerator IEnumerable.GetEnumerator()
{
  return(GetEnumerator());
}

並且為IntListEnumerator強制實作IEnumerator.Current:

public object IEnumerator.Current
{
	get
	{
		return(Current);
	}
}

這樣就可以支援標準的循序處理方法, 同時可以適用在支
援嚴格型別而採取樣式比對方式的編譯器, 以及僅支援
IEnumerable/IEnumerator介面的編譯器了。
-- 待續 
.........................................................................................
台北資訊月 旗標破天荒 7.8折供應
前所未有的折扣 喜歡的書可要趁機一網買進!


* 全面 7.8折(特價書除外) 刷卡不加價
* 超低特賣書 99 元起,買到才是賺到!
* Windows XP 使用者升級手冊嚐新特價 199 元!
* 買任何一本書即可以 149 元換購 PCDIY 超頻散熱玩家實戰
(限購一本,特價品除外)
* 買書送 Office XP 獨家便條紙! (特價品除外)
* 二本以上再送特製 Windows XP 便條紙或哨子筆! (特價品除外)
* 買書還可參加旗標百萬贈品抽獎活動!
以上活動數量有限 送完為止
時間:90/12/1(六)--12/9(日)共 9 天 免費參觀
旗標攤位:台北世貿展一館 A907-910 B302-308

.........................................................................................
想索取前幾期的電子報內容請至智邦生活館下載
我要下載過期電子報
.........................................................................................

好書能增進知識、提高學習效率
卓越的品質是旗標的信念與堅持
歡迎光臨旗標的網站 - http://www.flag.com.tw

版權所有人:旗標出版股份有限公司
本電子報內容未經授權請勿轉載