プログラミングに詳しいやつちょっと来てくれ
■ このスレッドは過去ログ倉庫に格納されています
TestType(enum) test(int)があって
TestType? testType=(TestType)(test ?? null)
これうまくいかないんだけど何が悪い? 何かのNullableだと思うけどそのNull合体みたいなやつ使えるのか >>11
一応意図としては
int 0,1,2
をenumにキャストする、nullだったらnullを返す
testTypeはnullableだからnullを返しても問題ないっていう認識なんだが test(int)の返り値がint?なんだよな?
返り値をTestType?にしたらキャスト要らなくね?
C#のenumの仕様が分からんから想像だが test(int)って関数ってわけじゃないのか
紛らわしいな testType = test != null?
(TestType)Enum.ToObject(typeof(TestType), test):
null;
的な そもそもenum型に代入できるの?
C#ってそういうのアリ? >>16
intからenumにそのままキャストは出来ない
逆は出来るけど >>16
勘違いしてた
enumはクラス宣言みたいなもんだから代入は出来んね
testTypeに入るのもTestTypeで宣言したValueの型になる そういうことか
intをenumにキャストして代入しようということか
そりゃ無理だろjk Enumがオブジェクトになるタイプの言語なら代入できると思うけど
C#みたいなただの列挙型なら使用時に何らかの変換はいるよ C#のenumの仕様をしらんからなんとも言えないけど一端intからキャストしてやればいいんでないの Null許容型にnullが入っているときはキャストすると実行時にエラーになるのか
enumではなく、intやlongのキャストでも発生する
long? i = 3;
i = null;
int? j = (int)(i.GetValueOrDefault(0));
のようにnullではなく、初期値を返すようにしたり、
int? j = (int)(i.HasValue ? i.Value : 0);
のように確実にintが返るようにすれば通るみたい
ただ、そもそもenumの中にデフォルト値やエラーの場合の値を作っておくほうがスムーズな気もする ■ このスレッドは過去ログ倉庫に格納されています