2017-09-02 8 views
-1

私は次のコードを書かれている:として私は3行目では、コンパイル時エラーを取得していますC#では、ASキーワードを使用して値を抽出できますか?どうやって?

 object obj = 123; // Line 1 
     int? num = null; // Line 2 
     num = obj as int; // Line 3 

を - 「キーワードは( 『intは』非NULL可能値である参照型またはNULL可能タイプで使用されなければならないようタイプ)"。

私は理解したい

:私のINTがNULL可能ですが
は 1、なぜそれが
2.どのように我々はNUMでOBJの値を取得することができ、このエラーを与えていますか? ASキーワードはここで動作しませんか?

答えて

4

Int?intは2種類あります。

num = obj as int?; 

変更

num = obj as int; // Line 

読みやすくするために、あなたも書くことがあります。

Nullable<int> num; 
num = obj as Nullable<int>; 

私はこのもう少し拡張し、どのように行う、と言うつもりですヌル可能なオブジェクトから値を取得します。さて、ここに一つの方法があります。これが動作するためには

object obj = 123; 
int? num; 
num = obj as int?; 
int myNumericValue = default(int); 
If (num.HasValue) myNumericValue = num.Value; 
1

....

num = obj as int; // Line 3 

... asオペレータはobjintにキャストできない場合nullを返すことができなければなりません。しかし、intはnullを格納できないため、エラーが発生します。

は、次の2つの選択肢があります:

1. NULL可能int型

int? num; 
num = obj as int?; 

2.もう少しコードを

int num; 
num = (obj is int) ? (int)obj : default(int); 
関連する問題