日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

StringCollection FAQ [C#, BCL]

發(fā)布時間:2025/3/15 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 StringCollection FAQ [C#, BCL] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

StringCollection FAQ [C#, BCL]

?

Updated on Monday, March 21, 2005

?

Written by Allen Lee

?

Q:如何使用StringCollection[1]

A:通常我們有三種方法來訪問StringCollection里面的string元素:

?

//?Code?#01

StringCollection?sc?
=?new?StringCollection();
sc.AddRange(textBox1.Lines);

//?StringCollection?used?together?with?StringEnumerator.
StringEnumerator?se?=?sc.GetEnumerator();
while?(se.MoveNext())
{
????Console.WriteLine(se.Current);
}


//?'foreach'?syntax?used.
foreach(string?str?in?sc)
{
????Console.WriteLine(str);
}


//?'for'?syntax?used.
for(int?i?=?0;?i?<?sc.Count;?i++)
{
????Console.WriteLine(sc[i]);
}

?

Q:與ArrayList相比,StringCollection有什么優(yōu)勢?

A:首先讓我們來看看如下代碼:

?

//?Code?#02

//?StringCollection?used?for?Strings?operation.
StringCollection?sc?=?new?StringCollection();
sc.AddRange(textBox1.Lines);

foreach?(string?str?in?sc)
{
????
if?(str.Trim().StartsWith("File"))
????
{
????????
//?Do?something
????}

????
else?if?(str.Trim().StartsWith("Registry"))
????
{
????????
//?Do?something?else
????}

}


//?ArrayList?used?for?Strings?operation.
ArrayList?al?=?new?ArrayList();
al.AddRange(textBox1.Lines);

foreach?(object?obj?in?al)
{
????
string?str?=?(string)obj;

????
if?(str.Trim().StartsWith("File"))
????
{
????????
//?Do?something
????}

????
else?if?(str.Trim().StartsWith("Registry"))
????
{
????????
//?Do?something?else
????}

}

?

從上面的代碼我們看可以看出,用StringCollection寫出的代碼更加直觀(尤其在你要對集合里面的String元素進行復雜的操作的時候),清楚地表明了集合里面的元素的性質(zhì),并且免除我們手動進行強類型轉(zhuǎn)換。

Q:StringCollection是否為string作了專門的優(yōu)化?

A:沒有!這可能是一個最大的誤解,別看到StringCollection只用來儲存string就以為它為string的儲存作了專門的優(yōu)化!

雖然在某程度上用StringCollection寫的代碼比ArrayList的更加直觀,然而后者卻在性能上稍勝一籌[2]。事實上,StringCollection只是對ArrayList進行了一番裝裱而已(以下是使用Reflector反編譯的StringCollection代碼片斷):

?

//?Code?#03

[Serializable]
public?class?StringCollection?:?IList,?ICollection,?IEnumerable
{
????
//?Methods
????public?void?AddRange(string[]?value)
????
{
????????
if?(value?==?null)
????????
{
????????????
throw?new?ArgumentNullException("value");
????????}

????????
this.data.AddRange(value);
????}


????
//?Other?methods?omitted

????
//?Properties
????public?string?this[int?index]
????
{
????????
get?{?return?(string)?this.data[index];?}
????????
set?{?this.data[index]?=?value;?}
????}


????
//?Other?properties?omitted

????
//?Fields
????private?ArrayList?data;
}

?

從代碼中我們可以看到StringCollection實質(zhì)上把其所提供的功能重定向給ArrayList,它們的關(guān)系是Use-A。

Q:在什么情況下我們應(yīng)該使用StringCollection呢?

A:這個問題沒有標準答案,視你所要處理的問題和你的處理原則而定。首先,讓我們來聽聽Robert B. Murray的想法:

程序的正確性要比它的速度更重要。和人力資源相比,計算機的運行時間的開銷會變得越來越便宜;對于那些在提高性能的同時還會導致程序的可理解性和可維護性變差的方法,我們應(yīng)該持謹慎對待。[3]

于是,一般說來,使用StringCollection而不是ArrayList是有一定作用的。但就我個人來說,我已經(jīng)習慣了使用ArrayList。當然,如果你使用的是.NET 2.0,那么List會是你不二的選擇,它結(jié)合了StringCollection和ArrayList的優(yōu)點——代碼直觀和性能優(yōu)良!

?

//?Code?#04

List
<string>?ls?=?new?List<string>();
ls.AddRange(textBox1.Lines);

foreach?(string?str?in?ls)
{
????
if?(str.Trim().StartsWith("File"))
????
{
????????
//?Do?something
????}

????
else?if?(str.Trim().StartsWith("Registry"))
????
{
????????
//?Do?something?else
????}

}

?

關(guān)于這個問題,我也請教了Kit George

?

Kit,

Hi, I'm Allen Lee. I want to ask you in what situations we shall use System.Collection.Specialized.StringCollection? When I used Reflector to deassembly .NET, I found that StringCollection actually uses a ArrayList to provide its functions and it doesn't have a better performance than ArrayList! What's more, in .NET 2.0, we have generics; then is it necessary to use StringCollection or leave it alone in our future development?

I'm looking forward to hearing from you! Thanks!

Yours, sincerely
Allen Lee
Friday, March 18, 2005

?

?

Allen: leave it alone, and use List. StringCollection should probably be avoided now we have generics.

?

可見,在.NET 2.0中,泛型集合類應(yīng)該作為我們處理這類問題的首選工具。如果你對使用泛型集合類感興趣的話,可以看看《Power Collections - An Extension Library for System.Collections.Generic》這個MSDN TV。

?

總結(jié)

以上是生活随笔為你收集整理的StringCollection FAQ [C#, BCL]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看中文字幕亚洲 | 国产日韩三级 | 好男人www社区在线视频夜恋 | 在线麻豆 | 99热这里只有精品5 国产精品伦子伦免费视频 精品一二三 | 91字幕网 | 亚洲av成人精品午夜一区二区 | 亚洲欧美中文字幕5发布 | 欧洲成人综合网 | 精品1卡二卡三卡四卡老狼 日韩三级网 | 国产亚洲精品久久久久动 | 91沈先生在线 | 日本中文字幕在线视频 | 99视频只有精品 | 国模小丫大尺度啪啪人体 | 少妇欧美激情一区二区三区 | 日韩五月天 | 性chinese天美传媒麻 | 精品乱子伦一区二区三区 | 成年人精品 | 懂色a v | 久久精品视频在线播放 | 日韩欧美精品久久 | 久久免费视频精品 | 亚洲欧洲自拍 | 免费一区二区三区 | 草草影院国产第一页 | 日本一级免费视频 | 国产真人无码作爱视频免费 | aaa在线播放 | 国产一区二区三区黄 | 18视频在线观看男男 | 88av网站 | 精品少妇人妻av免费久久久 | 成人夜晚视频 | 国产综合久久久久 | 精品国产一区二 | av男人的天堂av | 香蕉茄子视频 | 国产精品天美传媒入口 | 中文字幕在线天堂 | 国产精品丝袜视频 | 性一交一乱一色一免费无遮挡 | av美国| 国产在线中文字幕 | 欧美日本激情 | 色综合天天综合 | 福利国产在线 | 色成人综合网 | 国产精品又黄又爽又色无遮挡 | 免费无码av片在线观看 | 曰本黄色大片 | 国产性猛交普通话对白 | www亚洲色图 | 手机在线看片日韩 | 国产区视频在线 | 色骚综合 | 日皮毛片 | www.99在线| 东北高大丰满bbbbzbbb | 国产激情无码一区二区三区 | 夜夜嗨av一区二区三区 | 寡妇激情做爰呻吟 | 黄色一级片一级片 | 久久人人爽爽人人爽人人片av | 亚洲第一页色 | 黄网站在线免费看 | 欧美成人高清视频 | 中文字幕乱码免费 | 四虎国产精品永久在线国在线 | 小镇姑娘国语版在线观看免费 | 国内毛片视频 | 精品人妻天天爽夜夜爽视频 | 日本中文字幕在线不卡 | 日本人妻换人妻毛片 | 男生尿隔着内裤呲出来视频 | 国产51页 | 99精品一区二区三区无码吞精 | 激情网色| 午夜激情福利电影 | 国产香蕉视频在线 | 亚洲一区二区福利 | 国产精品第72页 | 亚洲色图在线观看 | 色婷婷久久综合中文久久蜜桃av | 一区二区三区爱爱 | 亚洲精品久久久久久无码色欲四季 | 一区二区中文在线 | 福利资源在线 | 欧美激情va永久在线播放 | 午夜电影福利网 | 久久久精品免费观看 | 五月天丁香网 | 免费在线观看黄色网址 | 杨幂一区二区三区免费看视频 | 久青草资源福利视频 | 精品一区二区三区久久 | 综合精品| 亚洲天堂999|