X



プログラミングに詳しいやつちょっと来てくれ
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:49:28.331ID:MSXsFjWR0
TestType(enum) test(int)があって

TestType? testType=(TestType)(test ?? null)

これうまくいかないんだけど何が悪い?
0002以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:49:36.951ID:MSXsFjWR0
ちなC#
0003以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:49:57.804ID:ahOGDMXd0
あれが悪い
0004以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:50:18.272ID:ji5XwLrEp
それが悪い
0005以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:50:20.307ID:JxcvyvQla
それも悪い
0007以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:50:45.911ID:YIa9njbma
testに引数入れなくてもいいのか?
0008以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:51:04.221ID:Lclb+sDG0
わかるけどしばらく高みの見物させて
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:51:04.478ID:R7BPMUDM0
もっともっと悪い
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:52:05.988ID:QMxd4MQwd
シーシャーブ分からん
0011以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:54:05.537ID:QMxd4MQwd
何かのNullableだと思うけどそのNull合体みたいなやつ使えるのか
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:57:54.497ID:MSXsFjWR0
>>11
一応意図としては
int 0,1,2
をenumにキャストする、nullだったらnullを返す
testTypeはnullableだからnullを返しても問題ないっていう認識なんだが
0013以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 07:59:00.139ID:gtQe2vL4a
test(int)の返り値がint?なんだよな?
返り値をTestType?にしたらキャスト要らなくね?
C#のenumの仕様が分からんから想像だが
0014以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:00:00.873ID:SH28KV+X0
test(int)って関数ってわけじゃないのか
紛らわしいな
0015以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:05:01.212ID:SH28KV+X0
testType = test != null?
(TestType)Enum.ToObject(typeof(TestType), test):
null;
的な
0016以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:09:34.804ID:qTnHGHql0
そもそもenum型に代入できるの?
C#ってそういうのアリ?
0017以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:10:31.569ID:SH28KV+X0
>>16
intからenumにそのままキャストは出来ない
逆は出来るけど
0018以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:12:17.171ID:elABL+HZ0
こんなとこで質問すんなよZw
0019以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:12:55.875ID:SH28KV+X0
>>16
勘違いしてた
enumはクラス宣言みたいなもんだから代入は出来んね
testTypeに入るのもTestTypeで宣言したValueの型になる
0020以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:15:39.881ID:/HO5w2610
つかエラー文でわからんの?
0021以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:24:06.641ID:WVn0fjn30
そういうことか
intをenumにキャストして代入しようということか
そりゃ無理だろjk
0022以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:25:02.324ID:NSC1S9tPd
enumがなんのためにあるかわかってなさそう
0023以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:25:15.721ID:WVn0fjn30
と思ったけど、そういえばできたような
0024以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:27:17.343ID:SH28KV+X0
Enumがオブジェクトになるタイプの言語なら代入できると思うけど
C#みたいなただの列挙型なら使用時に何らかの変換はいるよ
0026以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 08:53:43.023ID:vaw5XcLar
C#のenumの仕様をしらんからなんとも言えないけど一端intからキャストしてやればいいんでないの
0027以下、5ちゃんねるからVIPがお送りします
垢版 |
2022/11/22(火) 09:23:06.435ID:WVn0fjn30
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の中にデフォルト値やエラーの場合の値を作っておくほうがスムーズな気もする
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況