內容提供:旗標出版公司 |
|
旗標技術通訊電子報
第127期 2001.11.30
|
報主報報: 一年一度的資訊月開始囉!! 台北 12/1~12/9 台中 12/14~12/19 高雄 91/1/6~1/14>詳情請看資訊月網站
|
|
- 本期訊息
- 本期書摘
- 下期預告
- 認識 Partition Magic 7 中文版
- 改良列舉器
|
|
Dreamweaver 4 魔法書
產品編號:F460
全彩印刷
定價:490元
施威銘研究室 著
|
|
本期書摘--CSS 在網頁中的使用方式
上週大致將 CSS 的語法介紹過, 依照定義 CSS 的方式, 使
用 CSS 有三種不同類型:
1.使用外部連結樣式表
第一種方法是使用外部連結的樣式表, 也就是先把要設定的
CSS 內容寫成一個檔案(用記事本即可), 並將其存成 CSS 檔
(副檔名.css), 網頁便可以使用連結的方式, 套用這個 CSS
檔的樣式設定, 而不必將 CSS 語法寫在 HTML 文件中. 這樣
的好處是, 可以一次讓多個網頁共用一份樣式表, 只要變更
.css 檔的內容, 就可以更改所有連結網頁的樣式.
2.以內嵌方式, 在網頁的開頭定義
將 CSS 語法寫在<Style>、</style>標籤之間, 並放在
HTML 文件的開頭; 這種方式適用於指定單一網頁的樣式,
CSS 的影響範圍為整份網頁.
3.局部套用 CSS 樣式
將 CSS 語法定義在每個 HTML 標籤旁邊, 也就是前面所說
『隨著 HTML 標籤定義』的方法; 此時所定義的樣式只會影
響該 HTML 標籤, 其他相同的 HTML 標籤並未加定義, 則不
會受到影響.
當樣式衝突時的優先順序
以上三種 CSS 使用方式, 萬一都對同一個 HTML 標籤定義
了不同樣式, 這時候網頁會聽誰的? 事實上, CSS 樣式若沒
有衝突時, 其效果是一直累加上去的; 例如在網頁開頭將
<H1>設為"紅色", 後來又將某<H1>標籤局部定義為"居
中", 則該段標題文字將會變成"紅色字+居中對齊".
如果同時對<H1>的字體顏色下了不同的定義, 此時就有一
個先後順序了, 其優先順序是:
局部套用>在開頭定義 HTML 樣式>外部連結
所以若網頁中套用了多層次的樣式表時, 別忘了檢查誰的優
先次序高, 以免預期的樣式效果無法顯現!!
-- 待續
|
| |
............................................︽.............................................
|
C# 程式設計
產品編號:F8333
定價:580元
黃昕暐 譯
|
|
本期書摘--索引器(Indexers)之四--列舉器與 foreach
如果物件可以被視為陣列, 而且也能夠使用 foreach 敘述
一一取得個別的元素, 那麼使用起來就會方便許多。要讓物
件可以搭配 foreach 使用, 就必須瞭解 foreach 背後的運
作原理。
當編譯器遇到這樣的程式區塊時:
foreach (string s in myCollection)
{
Console.WriteLine("String is {0}", s);
}
它會將程式轉成以下形式:
IEnumerator enumerator =
((IEnumerable) myCollection).GetEnumerator();
while (enumerator.MoveNext())
{
string s = (string) enumerator.Current;
Console.WriteLine("String is {0}", s);
}
其中第一個步驟就是轉型為 IEnumerable, 如果轉型成功, 表
示該物件支援列舉的功能, 接著就傳回一個進行列舉工作的
IEnumerator 參址器。並透過 MoveNext () 以及 Current 循
序處理各個元素。
您可以讓做為容器的類別直接實作 IEnumerator 介面, 或者
是額外使用一個私有的類別來實作這個介面。一般來說, 我們
會比較建議使用私有類別, 因為這樣可以讓容器類別不會太過
複雜, 並且可以同時讓多個使用者循序處理該物件。
底下的範例就展示了一個支援 foreach 用法的整數集合類別
(注意到這個類別並沒有完整實作此種類別的功能) :
using System;
using System.Collections;
// 注意:這個類別不能在多執行緒下運作
public class IntList: IEnumerable
{
int[] values = new int[10];
int allocated = 10;
int count = 0;
int revision = 0;
public void Add(int value)
{
// 必要時重新配置
if (count + 1 == allocated)
{
int[] newValues = new int[allocated * 2];
for (int index = 0; index < count; index++)
{
newValues[index] = values[index];
}
allocated *= 2;
}
values[count] = value;
count++;
revision++;
}
public int Count
{
get
{
return(count);
}
}
void CheckIndex(int index)
{
if (index >= count)
throw new ArgumentOutOfRangeException(
"Index value out of range");
}
public int this[int index]
{
get
{
CheckIndex(index);
return(values[index]);
}
set
{
CheckIndex(index);
values[index] = value;
revision++;
}
}
public IEnumerator GetEnumerator()
{
return(new IntListEnumerator(this));
}
internal int Revision
{
get
{
return(revision);
}
}
}
class IntListEnumerator: IEnumerator
{
IntList intList;
int revision;
int index;
internal IntListEnumerator(IntList intList)
{
this.intList = intList;
Reset();
}
public bool MoveNext()
{
index++;
if (index >= intList.Count)
return(false);
else
return(true);
}
public object Current
{
get
{
if (revision != intList.Revision)
throw new InvalidOperationException(
"Collection modified while enumerating.");
return(intList[index]);
}
}
public void Reset()
{
index = -1;
revision = intList.Revision;
}
}
class Test
{
public static void Main()
{
IntList list = new IntList();
list.Add(1);
list.Add(55);
list.Add(43);
foreach (int value in list)
{
Console.WriteLine("Value = {0}", value);
}
foreach (int value in list)
{
Console.WriteLine("Value = {0}", value);
list.Add(124);
}
}
}
我們只要將集合類別本身做點修改就可以了。首先, 它實作
了 IEnumerable 介面, 因此擁有一個 GetEnumerator ()函
式, 會傳回一個 IEnumerator 參址器, 可以用來引用目前的
物件串列。
IntListEnumerator 就實作了可以列舉所傳入物件的類別,
因此實作了IEnumerator介面中的成員函式。
當程式在列舉一個集合物件時, 如果去修改集合的內容, 會
有意外的結果, 因此我們所實作的類別會偵測這樣的情況
(也就是Main ()中第二個foreach所展示) 。在IntList類別
中, 有一個版本編號, 會在每次修改串列內容時遞增編號,
當列舉器開始運作時, 會記下當時的版本編號, 然後在讀取
Current 屬性時檢查編號是否相同, 以判斷串列是否遭到修
改。
-- 待續
|
| |
............................................︽.............................................
|
|
|
台北資訊月 旗標破天荒 7.8折供應
前所未有的折扣 喜歡的書可要趁機一網買進!
* 全面 7.8折(特價書除外) 刷卡不加價
* 超低特賣書 99 元起,買到才是賺到!
* Windows XP 使用者升級手冊嚐新特價 199 元!
* 買任何一本書即可以 149 元換購 PCDIY 超頻散熱玩家實戰 (限購一本,特價品除外)
* 買書送 Office XP 獨家便條紙! (特價品除外)
* 二本以上再送特製 Windows XP 便條紙或哨子筆! (特價品除外)
* 買書還可參加旗標百萬贈品抽獎活動!
以上活動數量有限 送完為止
時間:90/12/1(六)--12/9(日)共 9 天 免費參觀
旗標攤位:台北世貿展一館 A907-910 B302-308
|
| |
............................................︽.............................................
|
|
|
想索取前幾期的電子報內容請至智邦生活館下載
我要下載過期電子報 |
|
|
............................................︽.............................................
|
版權所有人:旗標出版股份有限公司
本電子報內容未經授權請勿轉載
|
|