首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 優化字串操作經驗談(二)

     編輯:關於C語言

那麼把程式碼改一下:

// string myString = "1234";
string myString = null;
int myint = 0;
myint = Convert.ToInt32(myString);
Console.Write(myint + "\r\n");
myint = Int32.Parse(myString);
Console.Write(myint + "\r\n");
Int32.TryParse(myString, out myint);
Console.Write(myint + "\r\n");

這次字串是 null,執行結果怎樣?(程式將會異常!)

因為解析錯誤時:

  • Convert.ToInt32() 在 null 時不拋異常回傳 0;
  • Int32.Parse() 會拋異常;
  • Int32.TryParse() 不拋異常,回傳 true/false 說明是否成功,失敗時調用方得到 0 值。

由於 Convert.ToInt32() 在 null 時看不到 Int32.TryParse() 結果,再分調試與不調試看差異:

調試:(將看到 TryParse 回傳 false,圖略)

一般出 bug 屬少數,大家都會測試保證不出 bug,最關心或許是效能。

再修改程式碼:

string myString1 = "1234";
int myint = 0;
Console.Write(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString() + " ");
for (int i = 0; i < 1000000; i++)
    myint = Convert.ToInt32(myString1);
Console.Write(myint + " \r\n");
Console.Write(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString() + "\r\n ");

string myString2 = "1234";
for (int i = 0; i < 1000000; i++)
    myint = Int32.Parse(myString2);
Console.Write(myint + "\r\n ");
Console.Write(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString() + " ");

string myString3 = "1234";
for (int i = 0; i < 1000000; i++)
    Int32.TryParse(myString3, out myint);
Console.Write(myint + "\r\n ");
Console.Write(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString() + "\r\n ");

(執行效果圖略,所耗時間基本相差不遠)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved