ふらっと C#,C♯,C#(初心者用) Part156

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ 5f01-NOMG)
垢版 |
2022/09/18(日) 14:39:29.51ID:VjUDO6tf0
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part155
https://mevius.5ch.net/test/read.cgi/tech/1655422932/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
867デフォルトの名無しさん (ワッチョイ 62ad-eHBA)
垢版 |
2022/11/20(日) 16:09:13.26ID:ruJch1bQ0
>>866
privateならその通り
publicならクラス外でも使える
2022/11/20(日) 16:55:21.88ID:MjJ+/fUP0
っていう構造にも関わらず
継承できないから
クラスを継承すると
enumで書いてる状態は
全部書き直し

ハイ、全部ちんぽでした!
869デフォルトの名無しさん (ワッチョイ 7735-VKOE)
垢版 |
2022/11/20(日) 16:57:27.98ID:qg1DZ5gK0
クラス内のクラスって継承で継承できるっけ?
何がともあれメリットがないことにはならないけれども。
2022/11/20(日) 17:05:37.84ID:MjJ+/fUP0
他のくだらん機能は
どうでもいいから
enumを継承できるようにしろよ
まあ、なくても
const intで頑張るからいいけど
まあ、その場合enumは一生使わないね
871デフォルトの名無しさん (ワッチョイ 4b5f-k7YZ)
垢版 |
2022/11/20(日) 18:24:34.53ID:x1RY5Ndj0
当たり前だろ
クラス階層違うのに同じ名称を押し通す方がやばいわ
2022/11/22(火) 18:28:02.20ID:nAJcGQvG0
まあ名称はどうでもいいんだが

クラスAの状態を1〜3でEnumで持ってて
クラスAを継承してクラスBを作った
クラスBの状態1〜5をEnumでもつ
ここで、クラスA用のEnum継承して4〜5を追加して1〜5のEnum作りたい

ということはあるんじゃね
873デフォルトの名無しさん (ワッチョイ cf5f-ES6F)
垢版 |
2022/11/22(火) 18:38:58.38ID:NaPYQccb0
enumはクラスの中に入れるなってことなのでは
2022/11/22(火) 18:54:32.20ID:rbB+zYjt0
enumの継承って、キャストの安全性が保証できなくなるんじゃない?
2022/11/22(火) 20:08:00.71ID:5norvibI0
継承と言うか列挙子の追加やね
確かにたまにやりたいと思うことはある
enum A {A1, A2, A3};
enum B: A {B1, B2};
みたいにできればいいのにね
2022/11/22(火) 20:11:29.21ID:tdt1l6wr0
んまあどうでもいいです…
2022/11/22(火) 20:43:08.15ID:F4U9XWNgd
>>875の場合はA型をB型にキャストするのは型安全で逆は非安全だから、通常の継承とは逆になってしまう
TypeScriptみたいに type B = A & enum { B1, B2 } ができるといいんだろうね
2022/11/22(火) 21:56:55.88ID:2vHKVf9I0
>>877
> type B = A & enum { B1, B2 }
なにか勘違いしてないか?
type Bは役に立たないぞ
879デフォルトの名無しさん (ササクッテロリ Spdf-k7YZ)
垢版 |
2022/11/22(火) 21:58:13.24ID:s23xOfAqp
enum 張りなおせばよかばい
2022/11/23(水) 00:07:27.78ID:6lN/+0f80
>>875
enumB(1〜5)を受け入れるところは当然enumA(1〜3)も受け入れたいわけだが
これを認めると親クラスが子クラスに変換できることになる

>>877
せめてenumからenumへの暗黙変換定義できればなぁ

結局全部再定義して、int(元の数値)介して変換とか
それならもとからintずらずら並べたほうが良いかという
2022/11/23(水) 00:09:25.48ID:GHFjAPMfd
>>878
ああ、確かに間違いだな
&じゃなくて|だ
2022/11/23(水) 01:13:39.40ID:w1dmgQVP0
な、enumがクソなせいで
クラスの継承までクソになってるだろ
早くenumの継承できるようにしろよ
これができなくてどーすんのよ

って機能な実は
2022/11/23(水) 01:27:51.47ID:mCXmHJvQ0
まさに鬼の首を取ったよう
884デフォルトの名無しさん (ワッチョイ 7735-VKOE)
垢版 |
2022/11/23(水) 06:34:20.68ID:3geqF3we0
クラス内に書かなきゃいい
2022/11/23(水) 08:51:16.99ID:g5bfG+kA0
>>877,880
だから俺が欲しいのは継承じゃなくて列挙子の追加って言ってるだろ
enum B: A {B1, B2}; だと継承と間違えると言うなら別の構文でもいい
ベースの定義を引き継いで定義できればいい
2022/11/23(水) 11:31:55.12ID:hhL0Iwa90
enum継承を実装するならまずはstruct継承を実装しないといけない
そして値型の継承をバンバン行うC++ですらenum継承はサポートされてないから諦めるんだな
とは言え.net standard2以上ならソースジェネレーター使えるんだからC++のマクロ実装よりも堅牢にenum継承を叶えられるのがC#
2022/11/23(水) 12:09:29.79ID:A1o24w6O0
enumの継承なんて欲しいと思った事一度も無いわ
2022/11/23(水) 12:14:49.51ID:w1dmgQVP0
>>887
状態遷移をするものを書いたことないからだろ
書くと一発で不満が出る
仕方なくenumで定義したステータスを
const intに直す作業をすることになる
2022/11/23(水) 12:51:02.69ID:Gf+fcBNM0
変性的にどうなんかな?
基底enumを要求するところに派生enum渡して大丈夫?
2022/11/23(水) 13:10:21.66ID:HMCqpO+TM
>>888
それ設計大丈夫?
コード上のコンテキストで十分なものまで状態にしちゃってたりしない?
2022/11/23(水) 13:31:54.09ID:w1dmgQVP0
>>890
そんなの問題じゃねぇじゃん
適切な状態遷移のクラスを作って
継承するとenum使えないんだから
2022/11/23(水) 13:34:04.83ID:w1dmgQVP0
c#のenum周りを作ったやつは
状態遷移も作ったことがない
クソってだけ
まあ、言語開発に状態遷移なんて
いらんだろし
知らないのも無理はない
ってだけの話でしょ
2022/11/23(水) 13:34:28.41ID:63Gynabdd
元での状態A,B,C
派生1で状態A,B,C,D
派生2で状態A,B,C,E
派生3で状態A,B,C,D,E

基底に追記するだけで済みそうだけど
わざわざパスタを希望するか
2022/11/23(水) 13:41:09.59ID:GkNkmjh5M
まず継承出来る言語を挙げてくれないとどんな設計を求めてるのかわからん
2022/11/23(水) 13:44:23.94ID:w1dmgQVP0
>>894
状態遷移作ったことねぇやつは遠慮してくんない?
2022/11/23(水) 13:55:25.91ID:EqePYP8Fp
初心者質問スレでいつまでいきがってんだか
公式にいしゅー投げとけよ
2022/11/23(水) 14:04:53.83ID:Gf+fcBNM0
>>891
継承したクラスで遷移する状態を拡張するのはいいとして、そこにenumも派生して使おうってのが
設計として間違ってるんじゃね?
2022/11/23(水) 14:18:05.41ID:w1dmgQVP0
>>897
そしたら状態はどうやって定義するの?

もちろんenumではない
ステータス用の型が必要っていう意見ならわかる
現状enumしかないってだけ
statetype型なんてできたらそれはそれでよい
enumの拡張だと>>889の問題がヘタクソがたくさんいる職場では問題になりそう
2022/11/23(水) 14:28:50.84ID:eUenOEMN0
状態推移ってstate machine?
enumでやんの?
2022/11/23(水) 14:33:23.73ID:Gf+fcBNM0
>>898
enumを派生するんじゃなくて別のenumを使う。
2022/11/23(水) 14:42:16.47ID:fS1C7GFxa
アスペが大暴れしてるな
2022/11/23(水) 14:49:08.23ID:eUenOEMN0
もしかしてHierarchical Finite State Machinesをenumでやろうという話?
ちょっと見た事も聞いた事もないので興味あります
2022/11/23(水) 15:18:56.76ID:hhL0Iwa90
>>892
逆にどの言語ならあるんだい?
C++なんてC#で言うところのEnum.GetValuesやEnum.GetNamesすら標準サポート無しだぞ
テンプレート黒魔術使ってコンパイラに超負荷をかけて実装できなくもないが
2022/11/23(水) 15:22:25.48ID:hhL0Iwa90
さっきも言ったけどソースジェネレーター利用したらかなりトリッキーなこともコンパイルセーフに行えるんだから騒いでる暇あったら作れば良いのに
2022/11/23(水) 15:24:55.83ID:fS1C7GFxa
enumの使い方も知らないやつにソースジェネレータとか無茶言うなよ
2022/11/23(水) 15:45:58.22ID:Z18k9Xb90
状態の管理は >>893 じゃだめなのかな。
自分も昔は継承したがってたけど、結局 893 みたい基底に追記するようになったんだよね。

enum をシリアライズすると int 扱いになるから、複数のクラスで継承して使う場合に、ほかのクラスの enum 定義を把握しておかないと危ないケースがあるような気がするんだけど。
2022/11/23(水) 16:01:46.11ID:zunuLtNb0
enumはCから受け継いだものだからこの設計についてC#を責めるのがまずアホ

enumの主な使いみちは値を限定することだ
要するにintの値を引数にしたいがその値の種類は3種類に限定したい、それ以外の値を渡そうとしたらコンパイルエラーにしたい、そういう時にenumを使う
その関数は引数として3種類しか渡らないことを保証されてるから無理やり他の値を渡した際には未定義動作になる

enumが継承できてポリモーフィズムが効くとすれば3種類の値しか来ない関数に普通に他の値を渡すことができてしまうだろw

なんでenumを使いたいか知らんけど使い方間違ってるからenumをやめて正しい方法を使え
以上
2022/11/23(水) 16:34:31.63ID:Z18k9Xb90
すげー納得出来る理由が来た。w
感謝。
2022/11/23(水) 16:53:35.93ID:g5bfG+kA0
まだ継承とか言ってるアホが居るのかw
今までのenumの機能だと継承なんてできても意味ない
継承したいたらenumの各値にメソッド定義出来るようにするとかぐらいの機能追加しないとな
2022/11/23(水) 17:19:16.06ID:w1dmgQVP0
>>907
でもまさに状態遷移の状態の定義なんてenumの出番だと思うんだけど
ここでこいつ役に立たなかったらほか何に使えるのってぐらい
ちなみにc++でこの辺悩んだことないなぁと思ったら#defineで書いてたわ
2022/11/23(水) 17:26:51.44ID:LfUozzif0
enum A {A1, A2, A3};があるとして
enum B: A {B1, B2}; としたい理由は何なの?
単に記述量を減らしたいだけ?

AとBは違うデータドメインだから違うenumにするわけなので
enum B: {A1, A2, A3, B1, B2};として新しく定義するか
元のenum Aを拡張するものだと思うけど
2022/11/23(水) 17:57:30.88ID:zunuLtNb0
>>910
なぜそこでenumの出番だと思ったのか
明らかに違うしどこで使うかはたった今説明しただろw
お前の設計はおかしいと何度も言われてるのに頑なに耳をふさいでるからできないんだぞ
2022/11/23(水) 18:00:35.30ID:zunuLtNb0
つか状態遷移で通じると思うところからやめろ
状態遷移の実装なんて何種類もあるわ
最終的に何がしたいのか言葉で説明できないやつは自分のやりたいことをプログラミング言語に直すことすらできんぞ
一般的なステートマシンでいいのか?
2022/11/23(水) 18:07:41.13ID:g5bfG+kA0
>>911
例えば標準はenum A {A1, A2, A3};の状態しかないけどオプションつけたらenum B: A {B1, B2};と増える
違うオプションつけたらenum C: A {C1, C2, C3, C4};と増えるとか
2022/11/23(水) 18:09:35.33ID:g5bfG+kA0
>>913
enumの話が状態遷移の状態を表すために使ってると分からないなら無理に話しに加わらなくていいぞ
2022/11/23(水) 18:32:51.60ID:zunuLtNb0
>>915
お前の言う状態遷移が何を指してるか言わないならお前の脳内かチラシの裏で処理しとけ
ステートマシンなら普通にインスタンスのパターンマッチングが使えるからそれがわからなきゃ無理してプログラミングの話に加わろうとするなよw
2022/11/23(水) 18:33:43.64ID:zunuLtNb0
多分switchが数値や文字列にしか使えないと思ってるド素人なんだろ?w
2022/11/23(水) 18:35:31.89ID:zunuLtNb0
switchが使いたいからenumなんだろ?w
おい正直に言ってみろよw
2022/11/23(水) 18:41:28.03ID:Gf+fcBNM0
なんか変なのが2人に増えた
2022/11/23(水) 18:47:35.71ID:eUenOEMN0
デザインパターンのステートマシンは登場しないような気がする
2022/11/23(水) 18:55:47.21ID:LfUozzif0
>>914
取りうる値すべて網羅するのがenumの存在意義
オプションがついたものが同じデータドメインなら
Aを拡張してenum A {A1, A2, A3, B1, B2, C1, … }とすべきでBやCは不要

異なるデータドメインとして扱いたいなら
enum A: {A1, A2, A3}; enum B: {A1, A2, A3, B1, B2}; enum C: {A1, A2, A3, C1, C2, C3, C4};とすべき
同じ名前のメンバーが存在しても異なる型で別のものだからそれぞれ定義するのは当たり前
2022/11/23(水) 19:03:20.20ID:v/FrQePk0
なんだろうフツーに連想配列じゃいかんの?
2022/11/23(水) 19:04:39.67ID:Gf+fcBNM0
typescriptその他の代数的データ型みたいに enum B = .A | B1 | B2 とやりたい気持ちはわかる。
2022/11/23(水) 19:05:08.39ID:w1dmgQVP0
>>921
それを言うならそもそも継承なんか使うなよって思う

まあ、コピペで貼ったほうが将来的に継承よりもうまくいってしまうケースはありまくったのも事実
2022/11/23(水) 19:07:17.68ID:LfUozzif0
>>923
TypeScriptでもenumでunion作ったりしないよ
できるけどやらない
やってる人がいるならモデリング方法が間違ってる
2022/11/23(水) 19:12:23.17ID:zunuLtNb0
状態遷移が何か良くわからずに最近知ったやつが唯一の状態遷移だと思ってるやつに何を言ってもむだだよ
教科書にenumを使えと書いてあったんだろうから
2022/11/23(水) 19:13:57.53ID:Gf+fcBNM0
ああすまん誤解させた。typescriptのenumを使う話じゃなくてtypeに読み替えてくれ。
2022/11/23(水) 19:28:19.96ID:g5bfG+kA0
>>916
enumの話だと言ってるのに...
お前パターンマッチング言いたいだけだろw
2022/11/23(水) 19:31:42.90ID:UGK9R6GJ0
現実のリサイクルにコストが3倍掛かるように
コード継承なんてフレームワーク利用者以外無意味だよ
自分で継承を考えながら書くことなんて時間の無駄でしかない
師匠とおだてられて弟子を育てて行くか、生涯わが道を探求していくかぐらい結果が違ってくる
2022/11/23(水) 19:31:45.39ID:g5bfG+kA0
>>921
> Aを拡張してenum A {A1, A2, A3, B1, B2, C1, … }とすべきでBやCは不要
Cしか変えないのに標準やBも再テストが必要になるよね

> 異なるデータドメインとして扱いたいなら
> enum A: {A1, A2, A3}; enum B: {A1, A2, A3, B1, B2}; enum C: {A1, A2, A3, C1, C2, C3, C4};とすべき
まあ君はそうすればいいんじゃね?
2022/11/23(水) 19:47:33.73ID:zunuLtNb0
>>928
enum使うのがおかしいとこれだけ何度も言われてるんだからどれだけボンクラでもそろそろ気づこうなw
お前の読んでる30年前の入門書が古いんだよw
2022/11/23(水) 19:52:20.51ID:6lN/+0f80
>>921
それenum Bで102種類登録しろって話だよな
まあそれが正しいのは分かるが

enum Bは完全にenum Aを内包していて100個は同じ
その状態でenum Aを拡張してenum Bを作りたいってのは間違ってるのか?
それともそういう状況でenumを使うのが間違ってると?
2022/11/23(水) 19:53:27.05ID:zunuLtNb0
>>932
間違ってると何度言われても聞く耳持たないなら聞くのやめたら?
2022/11/23(水) 19:54:47.89ID:Gf+fcBNM0
1. enum を継承できないのがおかしい。
2. enum を継承したいのがおかしい。
3. enum を使うのがおかしい。

1. と 3. がそれぞれ1人ずつだと思うのだが。
2022/11/23(水) 19:59:02.09ID:zunuLtNb0
>>934
enumを継承できるようにすると色々不具合が出るのは既に示した通り
だから継承したいやつがおかしいしできないのは当然

ここでenumを使うのも明らかに悪手でそれは本人も使いにくいと感じてるから薄々はわかってると思う

だけど薄々しかわからないのマジでアスペwww
使いにくい時点で気づこうぜw
2022/11/23(水) 20:06:27.70ID:Gf+fcBNM0
3. がお前さんひとりだと言ったつもりだったんだが。
2022/11/23(水) 20:08:52.61ID:zunuLtNb0
>>936
お前の言いたいことなんか知らんが、もっといい方法があるのに文法に文句を言いながらenumに固執するのはアホだと思わんか?w
おいおいこんな簡単な理屈がわかるやつが俺しかいないってどうなってんのこのスレ?w
2022/11/23(水) 20:16:59.47ID:g5bfG+kA0
>>936
相手すんな、最近継承とかパターンマッチング覚えたキッズなんだろ
2022/11/23(水) 20:18:28.43ID:zunuLtNb0
>>938
お前は早くenumの使い方覚えろよw
どう考えてもそこじゃないだろ
使いにくい時点で何か違うなーって思えよw
2022/11/23(水) 20:23:29.96ID:zunuLtNb0
intは小さい数値しか使えないから設計したやつは頭おかしいって発狂してるやついたらアスペかなって思うだろ?

俺から見たお前らってそんな感じになってるぞ
long教えてもらったなら覚えろよw
2022/11/23(水) 20:25:12.72ID:Gf+fcBNM0
>>937
お前さん一人だけ話がずれているんだと思うぞ。
2022/11/23(水) 20:27:17.57ID:KUj2Jy2fa
>>941
ズレてるのはお前の頭だよw
enumを状態遷移に使いたいという話で、継承できないから使えないといつまでも文句言ってるやつに教えてやってるだけだぞw
違う話したいなら気にせずしろよ
ヅラ直してから
2022/11/23(水) 20:34:56.61ID:eUenOEMN0
ステートパターンはポリモーフィズムを実現する方法だけど
ステートマシンは特にポリモーフィズムを実現してなくてもステートマシンになってしまうらしい
むしろポリモーフィズムのメリットがないのに状態遷移させるメリットが全く分からない
2022/11/23(水) 20:37:28.39ID:KUj2Jy2fa
ステートマシンかどうか聞いても状態遷移知らないのかの一点張りで答えないんだよなあw
いやマジでお前が状態遷移知らないのかとw
せめてその入門書のタイトルくらい書こうやw
2022/11/23(水) 20:39:42.92ID:Gf+fcBNM0
>enumを状態遷移に使いたいという話で、

状態を表すのに使う話なんだがこのへんがズレてるんだろうな。
2022/11/23(水) 20:42:35.56ID:wPRe5xEXd
>>934
4. 列挙子の追加がしたい
これが入ってくるから、さらにややこしい
こちらは臨機応変かなぁ
2022/11/23(水) 20:45:01.02ID:KUj2Jy2fa
>>945
だからそこに使うなって話だぞ
何度言えばわかるんだよ?
継承しなきゃ使えないとかいうイミフな条件ついてるのにどう使う気なんだそれ?w
2022/11/23(水) 21:04:41.04ID:Gf+fcBNM0
>>946
列挙子の追加というのがもともとやりたいことでそれは大前提だと思う。
そこに継承を使うのは無理筋だから他の手でやれということで。
2022/11/23(水) 21:17:19.11ID:KUj2Jy2fa
できないことを地面に転がってしたいしたいと泣きわめくのはプログラマーとは言えないな
ツールはそこに揃ってる
なら最適な方法をみつけるのがプログラマーの仕事だ

XY問題でいつまでも時間潰すのはただの無能
↓100回読んどけ
https://ja.wikipedia.org/wiki/XY%E5%95%8F%E9%A1%8C
2022/11/23(水) 21:23:05.30ID:QiNG678ud
>>984
>>934の1番がこれよね
ID:w1dmgQVP0
4番はこっち
ID:g5bfG+kA0

継承ではなく追加したい、みたいな話
包含に近いか?
2022/11/23(水) 21:24:33.41ID:QiNG678ud
安価ミス、、、
>>948宛ね
2022/11/23(水) 21:48:33.88ID:+3bsKbsu0
状態遷移ってよく知らんけど
必要に迫られるごとに似たようなことはやってるな
2022/11/23(水) 21:52:28.30ID:+3bsKbsu0
複数のテーブル値関数を full outer join すると面白い結果が得られるぞ
C#からは脱線するが。
機会があれば業務適用しようと思ってる
2022/11/23(水) 22:10:16.15ID:Gf+fcBNM0
>>947
有限状態を表現するのにenumを使うのはごく普通のことでそれに文句つけてるのはお前さんだけだが?
代わりにいったい何を使えと言うんだろう?
2022/11/23(水) 22:36:14.78ID:Mu4NVEsX0
状態ごとの派生クラス作ったほうが楽じゃないの
enumを使い回そうってのがまずよくわかんないわ
2022/11/23(水) 22:51:15.68ID:v/FrQePk0
Statelessとか見たら腰抜かしそう
2022/11/23(水) 23:43:15.34ID:rAuww2HaM
こんな機能があれば便利なのにってのは分からんでも無いけど
他の言語も含めた実装状況見れば少数派がデカい声出してるだけでしょ
2022/11/24(木) 00:18:19.16ID:R18LG1aZ0
>>954
何をってもう何度も書いただろw
enumを使うことでうまくいかないのが明白になったなら固執するのがアホ
オブジェクトやクラスはハッシュコード持ってるからenumでなくともswitchで処理できるし継承もできる
状態遷移状態遷移言ってるが教科書コピペするんじゃなく何をどうしたいのかを見据えてそれを実現しなきゃいけないぞw
2022/11/24(木) 00:21:21.14ID:6EroDtbH0
>>935
「継承」できないしするのはおかしいのは分かったから
enumを「拡張」したいって思う
拡張したいって用途にenumを使う
どっちがおかしいって?
その理由が単にenumがそうなってないってなら、そうあるべきだって議論はありえると思うが

>>937
別に俺は固執する気はないので、そういうことはできないってならできないで良いんだが
もっといい方法って具体的には?
2022/11/24(木) 00:24:41.88ID:R18LG1aZ0
例えばステートマシンのノードの一つをカーソルで参照するだけでカレントステートを表現できるしカーソルを動かせばそれはもう状態遷移だろ
ノードをオブジェクトにすれば種類によって違うプロパティやメソッドも持てる
ここにenumの入る余地などない
俺が何を言ってるかわからんとすればお前の勉強不足だから伏して教えを請え
2022/11/24(木) 00:54:01.50ID:uAP2KDnH0
enumて要素を限定するためのもんでしょ
拡張できたらぐちゃぐちゃじゃん
拡張した場合また別の名前なり必要で別ものになるでしょ
2022/11/24(木) 06:12:20.08ID:0c/PVttN0
>>961
ぐちゃぐちゃになるかどうかは使い方次第
963デフォルトの名無しさん (ササクッテロリ Spdf-k7YZ)
垢版 |
2022/11/24(木) 11:04:40.36ID:Qxz+vdGfp
クラス内でしか意味がないものを他クラスで判断に使う事自体が問題じゃね?
2022/11/24(木) 12:05:41.62ID:I9DGq0SZa
ひょっとしてと思って「unity 状態」でググッたら質問者のやりたいことがわかったわw
キャラクタを委譲じゃなく継承させる糞コードでなんちゃってステートパターンしたいんだなw
継承したキャラクタは行動できるパターンが増えるから状態もそれによって増やしたいということだろ
キャラクタを継承させるという糞仕様から直すのが正解だがそれをしたくないならenumじゃなくクラス使えよ
その状態だけ継承させればキャラクタの継承要らないんじゃねというところに気づけばみんなが何を言ってたかわかるようになるかもしれんぞ
965.NET MAUI HighSchool (ワッチョイ 5601-MxP6)
垢版 |
2022/11/24(木) 12:19:13.38ID:DPMQyp0E0
Unityってクラスないの?
2022/11/24(木) 12:54:31.34ID:P04N2b5w0
継承とか拡張とは違うけど
enum StandardColor: {Red, Green, Blue}
enum ExtendedColor: {Teal, Turquoise}
とあった時にStandardColorとExtendedColorはそれぞれ個別の用途でも使うし
両方混ぜた集合からどちらか一方だけ選択する用途でも使いたいというのは理解できる

この場合はC#では言語的にはまだサポートされてない機能だから
サードパーティのライブラリを使うか自作するか
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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