'這是數(shù)組的一個方法了,可是可以給數(shù)組定義擴展方法來實現(xiàn)這種形式。不過要給Item每個成員能動態(tài)生成相應(yīng)方法,想不出其它簡單點的辦法,只能一個一個的添加擴展方法。
五峰網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,五峰網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為五峰成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的五峰做網(wǎng)站的公司定做!
Namespace?測試
Public?Class?Item
Public?Number()?As?String
Public?Name?As?String
Public?Symbol?As?String
Public?Value?As?Single
Public?Unit?As?String
Public?Description?As?String
Public?Remarks?As?String
End?Class
Public?Class?XX
Public?tty()?As?Item
Public?Sub?New()
tty(0).Name?=?"Women"
tty(0).Value?=?198000
tty(1).Name?=?"temen"
tty.Name("temen").Value?=?99999
End?Sub
End?Class
Public?Module?Module1
System.Runtime.CompilerServices.Extension()?_?
Public?Function?Name(ByVal?she?As?Item(),?ByVal?key?As?String)?As?Item?'定義擴展方法功能?在net.3.5前的版本像似沒有。
For?Each?it?In?she
If?it.Name?=?key?Then
Return?it
End?If
Next
Return?Nothing
End?Function
End?Module
End?Namespace
使用值類型的ToString方法
在連接字符串時 經(jīng)常使用 + 號直接將數(shù)字添加到字符串中 這種方法雖然簡單 也可以得到正確結(jié)果 但是由于涉及到不同的數(shù)據(jù)類型 數(shù)字需要通過裝箱操作轉(zhuǎn)化為引用類型才可以添加到字符串中 但是裝箱操作對性能影響較大 因為在進行這類處理時 將在托管堆中分配一個新的對象 原有的值復(fù)制到新創(chuàng)建的對象中
使用值類型的ToString方法可以避免裝箱操作 從而提高應(yīng)用程序性能
int num= ;
string str= go +num ToString();
運用StringBuilder類
String類對象是不可改變的 對于String對象的重新賦值在本質(zhì)上是重新創(chuàng)建了一個String對象并將新值賦予該對象 其方法ToString對性能的提高并非很顯著
在處理字符串時 最好使用StringBuilder類 其 NET 命名空間是System Text 該類并非創(chuàng)建新的對象 而是通過Append Remove Insert等方法直接對字符串進行操作 通過ToString方法返回操作結(jié)果
其定義及操作語句如下所示
int num;
System Text StringBuilder str = new System Text StringBuilder(); //創(chuàng)建字符串
str Append(num ToString()); //添加數(shù)值num
Response Write(str ToString); //顯示操作結(jié)果
使用 HttpServerUtility Transfer 方法在同一應(yīng)用程序的頁面間重定向
采用 Server Transfer 語法 在頁面中使用該方法可避免不必要的客戶端重定向(Response Redirect)
避免使用ArrayList
因為任何對象添加到ArrayList都要封箱為System Object類型 從ArrayList取出數(shù)據(jù)時 要拆箱回實際的類型 建議使用自定義的集合類型代替ArrayList 提供了一個新的類型 叫泛型 這是一個強類型 使用泛型集合就可以避免了封箱和拆箱的發(fā)生 提高了性能
使用HashTale代替其他字典集合類型
(如StringDictionary NameValueCollection HybridCollection) 存放少量數(shù)據(jù)的時候可以使用HashTable
為字符串容器聲明常量 不要直接把字符封裝在雙引號 里面
//避免
MyObject obj = new MyObject();
obj Status = ACTIVE ;
//推薦
const string C_STATUS = ACTIVE ;
MyObject obj = new MyObject();
obj Status = C_STATUS;
不要用ToUpper() ToLower()轉(zhuǎn)換字符串進行比較 用String Compare代替 它可以忽略大小寫進行比較
例
const string C_VALUE = PARE ;
if (String Compare(sVariable C_VALUE true) == )
{
Console Write( 相同 );
}
也可以用str == String Empty或者str Length == 判斷是否為空 (注意判斷輸入數(shù)據(jù)的長度 可防止sql注入式攻擊)
將String對象的Length屬性與 比較是最快的方法 避免不必要的調(diào)用 ToUpper 或 ToLower 方法
類型轉(zhuǎn)化Int TryParse()優(yōu)于Int Parse()優(yōu)于Convert ToInt ()
建議 NET 下用Int Parse() NET 用Int TryParse()
因為
Convert ToInt 會把最終的解析工作代理給 Int Parse
Int Parse 會把最終的解析工作代理給Number ParseInt
Int TryParse 會把最終的解析工作代理給Number TryParseInt
如果只是從XML對象讀取數(shù)據(jù) 用只讀的XPathDocument代替XMLDocument 可以提高性能
//避免
XmlDocument xmld = new XmlDocument();
xmld LoadXml(sXML);
txtName Text = xmld SelectSingleNode( /packet/child ) InnerText;
//推薦
XPathDocument xmldContext = new XPathDocument(new StringReader(oContext Value));
XPathNavigator xnav = xmldContext CreateNavigator();
XPathNodeIterator xpNodeIter = xnav Select( packet/child );
iCount = xpNodeIter Count;
xpNodeIter = xnav SelectDescendants(XPathNodeType Element false);
while(xpNodeIter MoveNext())
{
sCurrValues += xpNodeIter Current Value+ ;
}
避免在循環(huán)體里聲明變量 應(yīng)該在循環(huán)體外聲明變量 在循環(huán)體里初始化
C#程序開發(fā)要遵循的一個基本原則就是避免不必要的對象創(chuàng)建
//避免
for(int i= ; i ; i++)
{
SomeClass objSC = new SomeClass();
}
//推薦
SomeClass objSC = null;
for(int i= ; i ; i++)
{
objSC = new SomeClass();
}
捕獲指定的異常 不要使用通用的System Exception
//避免
try
{
some logic
}
catch(Exception exc)
{
Error handling
}
//推薦
try
{
some logic
}
catch(System NullReferenceException exc)
{
Error handling
}
catch(System ArgumentOutOfRangeException exc)
{
Error handling
}
catch(System InvalidCastException exc)
{
Error handling
}
使用Try catch finally時 要在finally里釋放占用的資源如連接 文件流等
不然在Catch到錯誤后占用的資源不能釋放
try
{}
catch
{}
finally
{
conntion close();
}
不要用Exception控制程序流程
有些程序員可能會使用異常來實現(xiàn)一些流程控制 例如
try{
result= /num;
}
Catch(Exception e)
{
result= ;
}
但實際上 Exception是非常消耗系統(tǒng)性能的 除非必要 不應(yīng)當使用異??刂苼韺崿F(xiàn)程序流程 上面的代碼應(yīng)當寫為
if(num!= )
result= /num;
else
result= ;
避免使用遞歸調(diào)用和嵌套循環(huán) 使用他們會嚴重影響性能 在不得不用的時候才使用
禁用和Jscript動態(tài)數(shù)據(jù)類型
應(yīng)當始終顯示地申明變量數(shù)據(jù)類型 這能夠節(jié)約程序的執(zhí)行時間 以往 開發(fā)人員喜歡使用 Visual Basic VBScript 和 JScript 的原因之一就是它們所謂 無類型 的性質(zhì) 變量不需要顯式類型聲明 并能夠簡單地通過使用來創(chuàng)建它們 當從一個類型到另一個類型進行分配時 轉(zhuǎn)換將自動執(zhí)行 不過 這種便利會大大損害應(yīng)用程序的性能
如
lishixinzhi/Article/program/net/201311/13198
1、vb.net的 數(shù)組定義與變量定義差不多??梢杂?dim 來定義 比如: dim a(100) as integer。 也可以不定義下標 在程序中 用 redim 來定義。
初始化一個ArrayList對象,調(diào)用它的方法和屬性,以及增加等操作。
Dim?myAL?As?New?ArrayList()
'Add方法用來增加元素。?
myAL.Add("Hello")
myAL.Add("World")?
myAL.Add("!")
'Count屬性表示元素個數(shù)。
Console.WriteLine(myAL.Count.ToString())
建議你用下面兩個泛型集合類替代ArrayList:
System.Collections.Generic.List
System.Collections.ObjectModel.Collection
你可以限制泛型類型為實現(xiàn)某一個接口的子類,通過添加 class MyClass : where T : IEnumerable可以限制T為實現(xiàn)IEnumerable的類,但是你不能限制T類型是接口類型,你只能限制T類型是一個引用類型,使用where T : class來做。 實例化跟反省沒關(guān)系...