C TryParse比Parse效率更高

2022-07-16 08:57:11 字數 1842 閱讀 4904

除了string外的所有基元型別都有兩個將字串轉型為本身的方法:parse和tryparse。

parse方法:如果字串格式不滿足轉換要求,會引發乙個一次異常。

tryparse方法:如果字串格式不滿足轉換要求,會返回false,同時將接收的變數置為初始值。

例:

1

public

static

double parse(string

s);2

public

static

bool tryparse(string s, out

double result);

引發異常這個過程會對效能造成損耗

實驗**:

1

double

re;2

long

ticks;

34 stopwatch sw =stopwatch.startnew();

5for (int i = 0; i < 1000; i++)611

catch

1215}16

sw.stop();

17 ticks =sw.elapsedticks;

18 console.writeline("

double.parse() 成功, ticks

", ticks);

1920 sw =stopwatch.startnew();

21for (int i = 0; i < 1000; i++)

2227}28

sw.stop();

29 ticks =sw.elapsedticks;

30 console.writeline("

double.tryparse() 成功, ticks

", ticks);

3132 sw =stopwatch.startnew();

33for (int i = 0; i < 1000; i++)

3439

catch

4043}44

sw.stop();

45 ticks =sw.elapsedticks;

46 console.writeline("

double.parse() 失敗, ticks

", ticks);

4748 sw =stopwatch.startnew();

49for (int i = 0; i < 1000; i++)

5055}56

sw.stop();

57 ticks =sw.elapsedticks;

58 console.writeline("

double.tryparse() 失敗, ticks

", ticks);

執行結果:

double.parse() 成功,1393

ticks

double.tryparse() 成功,1480

ticks

double.parse() 失敗,72487036

ticks

double.tryparse() 失敗,886 ticks

執行成功,parse和tryparse方法的效率在乙個數量級上;執行失敗;parse方法的執行效率明顯遠低於tryparse方法。

參考:《編寫高質量**改善c#程式的157個建議》陸敏技

建議4 TryParse比Parse好之美

如果注意觀察除string外的所有基元型別,會發現他們都有兩個將字串轉型為本身的方法 parse和tryparse。以型別double為例,這兩個方法最簡單的原型為 1 public static double parse string s 2 public static bool tryparse...

parse 和 eval 的區別

一般在js中使用parse將string轉json,相對來說比較安全 var a var b var c var d var e var f var g parse 物件和陣列 屬性名稱必須用雙引號包裹 最後乙個屬性後面不能有逗號。數值 前導0不能使用 在 json.stringify 中將會被忽略...

Parse與TryParse的區別

convert.toint32 int.parse int32.parse int.tryparse int 四者都可以解釋為將型別轉換為 int,那它們的區別是什麼呢?convert.toint32 與 int.parse 較為類似,實際上 convert.toint32 內部呼叫了 int.pa...