-1

一つ質問があります..

より効果的なパフォーマンスを発揮するのはどれですか? または、実行に時間がかからないのはなぜですか?

session["var"].ToString()

また

(string)session["var"]
4

5 に答える 5

0

このセッション変数が文字列であることがわかっている場合は、オプション 2 が最適です。

于 2012-05-17T05:01:41.070 に答える
0

ToString() はメソッドであり、(string) はキャスト (明示的) です。IMO キャスティングは常に高速です

参照型間のキャスト操作は、基になるオブジェクトの実行時の型を変更しません。そのオブジェクトへの参照として使用されている値の型を変更するだけです。
ソース:明示的な変換

.ToString() は、任意のオブジェクトから呼び出すことができます。このメソッドはオブジェクト クラスから継承され、オーバーロードできます

.(string) はキャストです。関数呼び出しではありません。オブジェクトがすでに文字列であることが確実な場合に使用する必要があります。null を含む文字列に変換できない場合は例外がスローされます。

于 2012-05-17T05:01:44.147 に答える
0

後者は、値を別の型にキャストするだけでパフォーマンスが向上します。前者には、メソッド呼び出しおよび/または新しいオブジェクトの作成が含まれます。

于 2012-05-17T05:02:27.123 に答える
0

ToString() は、オブジェクトが null の場合に例外を発生させます。したがって、object.ToString() の場合、object が null の場合、NullReferenceException が発生します。Convert.ToString() は、null オブジェクトの場合は string.Empty を返します。(文字列) キャストが null の場合はオブジェクトを割り当てます。だからの場合

MyObject o = (string)NullObject;

ただし、o を使用して任意のプロパティにアクセスすると、NullReferenceException が発生します。

Convert.ToString は内部的に value.ToString を使用します。String へのキャストは、外部関数呼び出しを必要とせず、内部型チェックのみを必要とするため、安価です。Object.toString() を呼び出すよりも、Object を String にキャストする方が少なくとも 2 倍高速です。

于 2012-05-17T05:34:40.417 に答える
0

これら 2 つの呼び出しは、非常に異なるアクションを実行しています (値が文字列であることを確実に知っている場合を除く)。したがって、どちらが速いかを尋ねることは完全に正しいとは言えません。

どちらの操作も関数の呼び出しを必要とするため、どちらの方法が高速になるかについては、両方の方法で引数があります。正しいアプローチは、プロトタイプを作成して測定することです。

Session からのデータへのアクセスが主なパフォーマンスのボトルネックになる可能性は低いことに注意してください (特に SQL またはその他のアウトプロセス セッション状態の場合)。

于 2012-05-17T05:07:51.900 に答える