1. ホーム
  2. c#

C#の.ToStringと "as string "の違いについて

2023-10-20 01:13:13

質問

次の2つのステートメントを使用することの違いは何ですか?最初の "as string" は型キャストで、2 番目の ToString は入力を文字列に変換するメソッドの実際の呼び出しのように見えますが?もしあれば、いくつかの洞察を探しています。

Page.Theme = Session["SessionTheme"] as string;
Page.Theme = Session["SessionTheme"].ToString();

どのように解決するのですか?

もし Session["SessionTheme"]string , as string が返されます。 null .

.ToString() は、他の型を文字列に変換するために、オブジェクトの ToString() メソッドを呼び出すことで文字列に変換しようとします。ほとんどの組み込み型では、これは文字列に変換されたオブジェクトを返しますが、 特定の .ToString() メソッドがない場合は、オブジェクトの型名が返されます。

object o1 = "somestring";
object o2 = 1;
object o3 = new object();
object o4 = null;

string s = o1 as string;  // returns "somestring"
string s = o1.ToString(); // returns "somestring"
string s = o2 as string;  // returns null
string s = o2.ToString(); // returns "1"
string s = o3 as string;  // returns null
string s = o3.ToString(); // returns "System.Object"
string s = o4 as string;  // returns null
string s = o4.ToString(); // throws NullReferenceException

もう一つ重要なことは、もしオブジェクトが null を呼び出すことです。 .ToString() を呼び出すと例外が発生しますが as string は単に null .