次のコードを使用すると、どこかで間違っているように感じられます。オブジェクトのint値を取得する
object obj = 1;
int i = int.Parse(obj.ToString());
もっと簡単な方法はありますか?
次のコードを使用すると、どこかで間違っているように感じられます。オブジェクトのint値を取得する
object obj = 1;
int i = int.Parse(obj.ToString());
もっと簡単な方法はありますか?
実際にはobj
のとは何ですか?あなたも試してみてください以下の所定のコンテンツについて
int i = (int)obj;
:それはちょうど箱入りint
であれば、単純にVHS版にキャスト
int i = Convert.ToInt32(obj);
余分なミックスで。
は、代わりにこれを試してみてください:
object obj = 1;
// Option 1: Convert. This will work when obj contains anything
// convertible to int, such as short, long, string, etc.
int i = Convert.ToInt32(obj);
// Option 2: Cast. This will work only when obj contains an int,
// and will fail if it contains anything else, like a long.
int i = (int)obj;
をあなたはキャストする必要があります
object obj = 1;
int i = (int) obj;
これは、静的なキャストと呼ばれています。あなたの情報については
は、他のキャストがあるのみ参照型(NULL値を持つことができるタイプ)で動作することができます動的キャストと呼ばれ、そうではない。この場合、(int型は値型である):
object obj = DateTime.Now;
DateTime date = obj as DateTime;
2つのメソッドの違いは、キャストされたオブジェクトに必要な型がない場合、最初のケース(静的キャスト)で例外が発生し、2番目のケースではnull(動的キャスト)が返されることです。
TryParseを使用すると、より優れた例外処理を行うことができます。しかし、それはこれよりも単純ではありません。 –
あなたの方法は問題ありませんが、変換のための他の方法もあります。 –