2010-12-20 13 views
2

次のコードを使用すると、どこかで間違っているように感じられます。オブジェクトのint値を取得する

object obj = 1; 
int i = int.Parse(obj.ToString()); 

もっと簡単な方法はありますか?

+2

TryParseを使用すると、より優れた例外処理を行うことができます。しかし、それはこれよりも単純ではありません。 –

+0

あなたの方法は問題ありませんが、変換のための他の方法もあります。 –

答えて

5

実際にobjとは何ですか?あなたも試してみてください以下の所定のコンテンツについて

int i = (int)obj; 

:それはちょうど箱入りintであれば、単純にVHS版にキャスト

シナリオの数を処理すると、追加されることはありません
int i = Convert.ToInt32(obj); 

余分なミックスで。

2

は、代わりにこれを試してみてください:

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; 
0

をあなたはキャストする必要があります

object obj = 1; 
int i = (int) obj; 

これは、静的なキャストと呼ばれています。あなたの情報については

は、他のキャストがあるのみ参照型(NULL値を持つことができるタイプ)で動作することができます動的キャストと呼ばれ、そうではない。この場合、(int型は値型である):

object obj = DateTime.Now; 
DateTime date = obj as DateTime; 

2つのメソッドの違いは、キャストされたオブジェクトに必要な型がない場合、最初のケース(静的キャスト)で例外が発生し、2番目のケースではnull(動的キャスト)が返されることです。

関連する問題