ふらっと C#,C♯,C#(初心者用) Part156 at TECH
[2ch|▼Menu]
[前50を表示]
850:デフォルトの名無しさん
22/11/20 15:42:59.87 6Lmlby97a.net
いやあれだろ
条件が複雑すぎてenumにできないと暴れてたアホ

851:デフォルトの名無しさん
22/11/20 15:47:47.16 wwqc7KSjM.net
enumってそれが使えるスコープっていう概念もあるのですか?

852:デフォルトの名無しさん
22/11/20 15:51:44.50 MjJ+/fUP0.net
普通に継承できねぇから
ステータス並べちまうと
クラスを継承したときに
enumも継承して
ステータス増やそうとするけど
enumの継承はできないので
ステータスは定数で並べるしかない
ってだっせー状態になる

853:デフォルトの名無しさん
22/11/20 15:53:25.80 MjJ+/fUP0.net
enum周り作ったやつの脳みそちんぽなんじゃん?

854:デフォルトの名無しさん
22/11/20 15:59:28.92 wwqc7KSjM.net
クラス内でenum宣言することがあると思うのだけど
そうした場合はそのクラス内だけでしかそのenumは使えないんですっけ?

855:デフォルトの名無しさん
22/11/20 16:09:13.26 ruJch1bQ0.net
>>854
privateならその通り
publicならクラス外でも使える

856:デフォルトの名無しさん
22/11/20 16:55:21.88 MjJ+/fUP0.net
っていう構造にも関わらず
継承できないから
クラスを継承すると
enumで書いてる状態は
全部書き直し
ハイ、全部ちんぽでした!

857:デフォルトの名無しさん
22/11/20 16:57:27.98 qg1DZ5gK0.net
クラス内のクラスって継承で継承できるっけ?
何がともあれメリットがないことにはならないけれども。

858:デフォルトの名無しさん
22/11/20 17:05:37.84 MjJ+/fUP0.net
他のくだらん機能は
どうでもいいから
enumを継承できるようにしろよ
まあ、なくても
const intで頑張るからいいけど
まあ、その場合enumは一生使わないね

859:デフォルトの名無しさん
22/11/20 18:24:34.53 x1RY5Ndj0.net
当たり前だろ
クラス階層違うのに同じ名称を押し通す方がやばいわ

860:デフォルトの名無しさん
22/11/22 18:28:02.20 nAJcGQvG0.net
まあ名称はどうでもいいんだが
クラスAの状態を1〜3でEnumで持ってて
クラスAを継承してクラスBを作った
クラスBの状態1〜5をEnumでもつ
ここで、クラスA用のEnum継承して4〜5を追加して1〜5のEnum作りたい
ということはあるんじゃね

861:デフォルトの名無しさん
22/11/22 18:38:58.38 NaPYQccb0.net
enumはクラスの中に入れるなってことなのでは

862:デフォルトの名無しさん
22/11/22 18:54:32.20 rbB+zYjt0.net
enumの継承って、キャストの安全性が保証できなくなるんじゃない?

863:デフォルトの名無しさん
22/11/22 20:08:00.71 5norvibI0.net
継承と言うか列挙子の追加やね
確かにたまにやりたいと思うことはある
enum A {A1, A2, A3};
enum B: A {B1, B2};
みたいにできればいいのにね

864:デフォルトの名無しさん
22/11/22 20:11:29.21 tdt1l6wr0.net
んまあどうでもいいです…

865:デフォルトの名無しさん
22/11/22 20:43:08.15 F4U9XWNgd.net
>>863の場合はA型をB型にキャストするのは型安全で逆は非安全だから、通常の継承とは逆になってしまう
TypeScriptみたいに type B = A & enum { B1, B2 } ができるといいんだろうね

866:デフォルトの名無しさん
22/11/22 21:56:55.88 2vHKVf9I0.net
>>865
> type B = A & enum { B1, B2 }
なにか勘違いしてないか?
type Bは役に立たないぞ

867:デフォルトの名無しさん
22/11/22 21:58:13.24 s23xOfAqp.net
enum 張りなおせばよかばい

868:デフォルトの名無しさん
22/11/23 00:07:27.78 6lN/+0f80.net
>>863
enumB(1〜5)を受け入れるところは当然enumA(1〜3)も受け入れたいわけだが
これを認めると親クラスが子クラスに変換できることになる
>>865
せめてenumからenumへの暗黙変換定義できればなぁ
結局全部再定義して、int(元の数値)介して変換とか
それならもとからintずらずら並べたほうが良いかという

869:デフォルトの名無しさん
22/11/23 00:09:25.48 GHFjAPMfd.net
>>866
ああ、確かに間違いだな
&じゃなくて|だ

870:デフォルトの名無しさん
22/11/23 01:13:39.40 w1dmgQVP0.net
な、enumがクソなせいで
クラスの継承までクソになってるだろ
早くenumの継承できるようにしろよ
これができなくてどーすんのよ
って機能な実は

871:デフォルトの名無しさん
22/11/23 01:27:51.47 mCXmHJvQ0.net
まさに鬼の首を取ったよう

872:デフォルトの名無しさん
22/11/23 06:34:20.68 3geqF3we0.net
クラス内に書かなきゃいい

873:デフォルトの名無しさん
22/11/23 08:51:16.99 g5bfG+kA0.net
>>865,868
だから俺が欲しいのは継承じゃなくて列挙子の追加って言ってるだろ
enum B: A {B1, B2}; だと継承と間違えると言うなら別の構文でもいい
ベースの定義を引き継いで定義できればいい

874:デフォルトの名無しさん
22/11/23 11:31:55.12 hhL0Iwa90.net
enum継承を実装するならまずはstruct継承を実装しないといけない
そして値型の継承をバンバン行うC++ですらenum継承はサポートされてないから諦めるんだな
とは言え.net standard2以上ならソースジェネレーター使えるんだからC++のマクロ実装よりも堅牢にenum継承を叶えられるのがC#

875:デフォルトの名無しさん
22/11/23 12:09:29.79 A1o24w6O0.net
enumの継承なんて欲しいと思った事一度も無いわ

876:デフォルトの名無しさん
22/11/23 12:14:49.51 w1dmgQVP0.net
>>875
状態遷移をするものを書いたことないからだろ
書くと一発で不満が出る
仕方なくenumで定義したステータスを
const intに直す作業をすることになる

877:デフォルトの名無しさん
22/11/23 12:51:02.69 Gf+fcBNM0.net
変性的にどうなんかな?
基底enumを要求するところに派生enum渡して大丈夫?

878:デフォルトの名無しさん
22/11/23 13:10:21.66 HMCqpO+TM.net
>>876
それ設計大丈夫?
コード上のコンテキストで十分なものまで状態にしちゃってたりしない?

879:デフォルトの名無しさん
22/11/23 13:31:54.09 w1dmgQVP0.net
>>878
そんなの問題じゃねぇじゃん
適切な状態遷移のクラスを作って
継承するとenum使えないんだから

880:デフォルトの名無しさん
22/11/23 13:34:04.83 w1dmgQVP0.net
c#のenum周りを作ったやつは
状態遷移も作ったことがない
クソってだけ
まあ、言語開発に状態遷移なんて
いらんだろし
知らないのも無理はない
ってだけの話でしょ

881:デフォルトの名無しさん
22/11/23 13:34:28.41 63Gynabdd.net
元での状態A,B,C
派生1で状態A,B,C,D
派生2で状態A,B,C,E
派生3で状態A,B,C,D,E
基底に追記するだけで済みそうだけど
わざわざパスタを希望するか

882:デフォルトの名無しさん
22/11/23 13:41:09.59 GkNkmjh5M.net
まず継承出来る言語を挙げてくれないとどんな設計を求めてるのかわからん

883:デフォルトの名無しさん
22/11/23 13:44:23.94 w1dmgQVP0.net
>>882
状態遷移作ったことねぇやつは遠慮してくんない?

884:デフォルトの名無しさん
22/11/23 13:55:25.91 EqePYP8Fp.net
初心者質問スレでいつまでいきがってんだか
公式にいしゅー投げとけよ

885:デフォルトの名無しさん
22/11/23 14:04:53.83 Gf+fcBNM0.net
>>879
継承したクラスで遷移する状態を拡張するのはいいとして、そこにenumも派生して使おうってのが
設計として間違ってるんじゃね?

886:デフォルトの名無しさん
22/11/23 14:18:05.41 w1dmgQVP0.net
>>885
そしたら状態はどうやって定義するの?
もちろんenumではない
ステータス用の型が必要っていう意見ならわかる
現状enumしかないってだけ
statetype型なんてできたらそれはそれでよい
enumの拡張だと>>877の問題がヘタクソがたくさんいる職場では問題になりそう

887:デフォルトの名無しさん
22/11/23 14:28:50.84 eUenOEMN0.net
状態推移ってstate machine?
enumでやんの?

888:デフォルトの名無しさん
22/11/23 14:33:23.73 Gf+fcBNM0.net
>>886
enumを派生するんじゃなくて別のenumを使う。

889:デフォルトの名無しさん
22/11/23 14:42:16.47 fS1C7GFxa.net
アスペが大暴れしてるな

890:デフォルトの名無しさん
22/11/23 14:49:08.23 eUenOEMN0.net
もしかしてHierarchical Finite State Machinesをenumでやろうという話?
ちょっと見た事も聞いた事もないので興味あります

891:デフォルトの名無しさん
22/11/23 15:18:56.76 hhL0Iwa90.net
>>880
逆にどの言語ならあるんだい?
C++なんてC#で言うところのEnum.GetValuesやEnum.GetNamesすら標準サポート無しだぞ
テンプレート黒魔術使ってコンパイラに超負荷をかけて実装できなくもないが

892:デフォルトの名無しさん
22/11/23 15:22:25.48 hhL0Iwa90.net
さっきも言ったけどソースジェネレーター利用したらかなりトリッキーなこともコンパイルセーフに行えるんだから騒いでる暇あったら作れば良いのに

893:デフォルトの名無しさん
22/11/23 15:24:55.83 fS1C7GFxa.net
enumの使い方も知らないやつにソースジェネレータとか無茶言うなよ

894:デフォルトの名無しさん
22/11/23 15:45:58.22 Z18k9Xb90.net
状態の管理は >>881 じゃだめなのかな。
自分も昔は継承したがってたけど、結局 893 みたい基底に追記するようになったんだよね。
enum をシリアライズすると int 扱いになるから、複数のクラスで継承して使う場合に、ほかのクラスの enum 定義を把握しておかないと危ないケースがあるような気がするんだけど。

895:デフォルトの名無しさん
22/11/23 16:01:46.11 zunuLtNb0.net
enumはCから受け継いだものだからこの設計についてC#を責めるのがまずアホ
enumの主な使いみちは値を限定することだ
要するにintの値を引数にしたいがその値の種類は3種類に限定したい、それ以外の値を渡そうとしたらコンパイルエラーにしたい、そういう時にenumを使う
その関数は引数として3種類しか渡らないことを保証されてるから無理やり他の値を渡した際には未定義動作になる
enumが継承できてポリモーフィズムが効くとすれば3種類の値しか来ない関数に普通に他の値を渡すことができてしまうだろw
なんでenumを使いたいか知らんけど使い方間違ってるからenumをやめて正しい方法を使え
以上

896:デフォルトの名無しさん
22/11/23 16:34:31.63 Z18k9Xb90.net
すげー納得出来る理由が来た。w
感謝。

897:デフォルトの名無しさん
22/11/23 16:53:35.93 g5bfG+kA0.net
まだ継承とか言ってるアホが居るのかw
今までのenumの機能だと継承なんてできても意味ない
継承したいたらenumの各値にメソッド定義出来るようにするとかぐらいの機能追加しないとな

898:デフォルトの名無しさん
22/11/23 17:19:16.06 w1dmgQVP0.net
>>895
でもまさに状態遷移の状態の定義なんてenumの出番だと思うんだけど
ここでこいつ役に立たなかったらほか何に使えるのってぐらい
ちなみにc++でこの辺悩んだことないなぁと思ったら#defineで書いてたわ

899:デフォルトの名無しさん
22/11/23 17:26:51.44 LfUozzif0.net
enum A {A1, A2, A3};があるとして
enum B: A {B1, B2}; としたい理由は何なの?
単に記述量を減らしたいだけ?
AとBは違うデータドメインだから違うenumにするわけなので
enum B: {A1, A2, A3, B1, B2};として新しく定義するか
元のenum Aを拡張するものだと思うけど

900:デフォルトの名無しさん (ワッチョイ ff07-1oEr)
22/11/23 17:57:30.88 zunuLtNb0.net
>>898
なぜそこでenumの出番だと思ったのか
明らかに違うしどこで使うかはたった今説明しただろw
お前の設計はおかしいと何度も言われてるのに頑なに耳をふさいでるからできないんだぞ

901:デフォルトの名無しさん (ワッチョイ ff07-1oEr)
22/11/23 18:00:35.30 zunuLtNb0.net
つか状態遷移で通じると思うところからやめろ
状態遷移の実装なんて何種類もあるわ
最終的に何がしたいのか言葉で説明できないやつは自分のやりたいことをプログラミング言語に直すことすらできんぞ
一般的なステートマシンでいいのか?

902:デフォルトの名無しさん (ワッチョイ e201-IwB9)
22/11/23 18:07:41.13 g5bfG+kA0.net
>>899
例えば標準はenum A {A1, A2, A3};の状態しかないけどオプションつけたらenum B: A {B1, B2};と増える
違うオプションつけたらenum C: A {C1, C2, C3, C4};と増えるとか

903:デフォルトの名無しさん (ワッチョイ e201-IwB9)
22/11/23 18:09:35.33 g5bfG+kA0.net
>>901
enumの話が状態遷移の状態を表すために使ってると分からないなら無理に話しに加わらなくていいぞ

904:デフォルトの名無しさん
22/11/23 18:32:51.60 zunuLtNb0.net
>>903
お前の言う状態遷移が何を指してるか言わないならお前の脳内かチラシの裏で処理しとけ
ステートマシンなら普通にインスタンスのパターンマッチングが使えるからそれがわからなきゃ無理してプログラミングの話に加わろうとするなよw

905:デフォルトの名無しさん
22/11/23 18:33:43.64 zunuLtNb0.net
多分switchが数値や文字列にしか使えないと思ってるド素人なんだろ?w

906:デフォルトの名無しさん
22/11/23 18:35:31.89 zunuLtNb0.net
switchが使いたいからenumなんだろ?w
おい正直に言ってみろよw

907:デフォルトの名無しさん
22/11/23 18:41:28.03 Gf+fcBNM0.net
なんか変なのが2人に増えた

908:デフォルトの名無しさん
22/11/23 18:47:35.71 eUenOEMN0.net
デザインパターンのステートマシンは登場しないような気がする

909:デフォルトの名無しさん
22/11/23 18:55:47.21 LfUozzif0.net
>>902
取りうる値すべて網羅するのが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};とすべき
同じ名前のメンバーが存在しても異なる型で別のものだからそれぞれ定義するのは当たり前

910:デフォルトの名無しさん
22/11/23 19:03:20.20 v/FrQePk0.net
なんだろうフツーに連想配列じゃいかんの?

911:デフォルトの名無しさん
22/11/23 19:04:39.67 Gf+fcBNM0.net
typescriptその他の代数的データ型みたいに enum B = .A | B1 | B2 とやりたい気持ちはわかる。

912:デフォルトの名無しさん
22/11/23 19:05:08.39 w1dmgQVP0.net
>>909
それを言うならそもそも継承なんか使うなよって思う
まあ、コピペで貼ったほうが将来的に継承よりもうまくいってしまうケースはありまくったのも事実

913:デフォルトの名無しさん
22/11/23 19:07:17.68 LfUozzif0.net
>>911
TypeScriptでもenumでunion作ったりしないよ
できるけどやらない
やってる人がいるならモデリング方法が間違ってる

914:デフォルトの名無しさん
22/11/23 19:12:23.17 zunuLtNb0.net
状態遷移が何か良くわからずに最近知ったやつが唯一の状態遷移だと思ってるやつに何を言ってもむだだよ
教科書にenumを使えと書いてあったんだろうから

915:デフォルトの名無しさん
22/11/23 19:13:57.53 Gf+fcBNM0.net
ああすまん誤解させた。typescriptのenumを使う話じゃなくてtypeに読み替えてくれ。

916:デフォルトの名無しさん
22/11/23 19:28:19.96 g5bfG+kA0.net
>>904
enumの話だと言ってるのに...
お前パターンマッチング言いたいだけだろw

917:デフォルトの名無しさん
22/11/23 19:31:42.90 UGK9R6GJ0.net
現実のリサイクルにコストが3倍掛かるように
コード継承なんてフレームワーク利用者以外無意味だよ
自分で継承を考えながら書くことなんて時間の無駄でしかない
師匠とおだてられて弟子を育てて行くか、生涯わが道を探求していくかぐらい結果が違ってくる

918:デフォルトの名無しさん
22/11/23 19:31:45.39 g5bfG+kA0.net
>>909
> 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};とすべき
まあ君はそうすればいいんじゃね?

919:デフォルトの名無しさん
22/11/23 19:47:33.73 zunuLtNb0.net
>>916
enum使うのがおかしいとこれだけ何度も言われてるんだからどれだけボンクラでもそろそろ気づこうなw
お前の読んでる30年前の入門書が古いんだよw

920:デフォルトの名無しさん
22/11/23 19:52:20.51 6lN/+0f80.net
>>909
それenum Bで102種類登録しろって話だよな
まあそれが正しいのは分かるが
enum Bは完全にenum Aを内包していて100個は同じ
その状態でenum Aを拡張してenum Bを作りたいってのは間違ってるのか?
それともそういう状況でenumを使うのが間違ってると?

921:デフォルトの名無しさん
22/11/23 19:53:27.05 zunuLtNb0.net
>>920
間違ってると何度言われても聞く耳持たないなら聞くのやめたら?

922:デフォルトの名無しさん
22/11/23 19:54:47.89 Gf+fcBNM0.net
1. enum を継承できないのがおかしい。
2. enum を継承したいのがおかしい。
3. enum を使うのがおかしい。
1. と 3. がそれぞれ1人ずつだと思うのだが。

923:デフォルトの名無しさん
22/11/23 19:59:02.09 zunuLtNb0.net
>>922
enumを継承できるようにすると色々不具合が出るのは既に示した通り
だから継承したいやつがおかしいしできないのは当然
ここでenumを使うのも明らかに悪手でそれは本人も使いにくいと感じてるから薄々はわかってると思う
だけど薄々しかわからないのマジでアスペwww
使いにくい時点で気づこうぜw

924:デフォルトの名無しさん
22/11/23 20:06:27.70 Gf+fcBNM0.net
3. がお前さんひとりだと言ったつもりだったんだが。

925:デフォルトの名無しさん
22/11/23 20:08:52.61 zunuLtNb0.net
>>924
お前の言いたいことなんか知らんが、もっといい方法があるのに文法に文句を言いながらenumに固執するのはアホだと思わんか?w
おいおいこんな簡単な理屈がわかるやつが俺しかいないってどうなってんのこのスレ?w

926:デフォルトの名無しさん
22/11/23 20:16:59.47 g5bfG+kA0.net
>>924
相手すんな、最近継承とかパターンマッチング覚えたキッズなんだろ

927:デフォルトの名無しさん
22/11/23 20:18:28.43 zunuLtNb0.net
>>926
お前は早くenumの使い方覚えろよw
どう考えてもそこじゃないだろ
使いにくい時点で何か違うなーって思えよw

928:デフォルトの名無しさん
22/11/23 20:23:29.96 zunuLtNb0.net
intは小さい数値しか使えないから設計したやつは頭おかしいって発狂してるやついたらアスペかなって思うだろ?
俺から見たお前らってそんな感じになってるぞ
long教えてもらったなら覚えろよw

929:デフォルトの名無しさん
22/11/23 20:25:12.72 Gf+fcBNM0.net
>>925
お前さん一人だけ話がずれているんだと思うぞ。

930:デフォルトの名無しさん
22/11/23 20:27:17.57 KUj2Jy2fa.net
>>929
ズレてるのはお前の頭だよw
enumを状態遷移に使いたいという話で、継承できないから使えないといつまでも文句言ってるやつに教えてやってるだけだぞw
違う話したいなら気にせずしろよ
ヅラ直してから

931:デフォルトの名無しさん
22/11/23 20:34:56.61 eUenOEMN0.net
ステートパターンはポリモーフィズムを実現する方法だけど
ステートマシンは特にポリモーフィズムを実現してなくてもステートマシンになってしまうらしい
むしろポリモーフィズムのメリットがないのに状態遷移させるメリットが全く分からない

932:デフォルトの名無しさん
22/11/23 20:37:28.39 KUj2Jy2fa.net
ステートマシンかどうか聞いても状態遷移知らないのかの一点張りで答えないんだよなあw
いやマジでお前が状態遷移知らないのかとw
せめてその入門書のタイトルくらい書こうやw

933:デフォルトの名無しさん
22/11/23 20:39:42.92 Gf+fcBNM0.net
>enumを状態遷移に使いたいという話で、
状態を表すのに使う話なんだがこのへんがズレてるんだろうな。

934:デフォルトの名無しさん
22/11/23 20:42:35.56 wPRe5xEXd.net
>>922
4. 列挙子の追加がしたい
これが入ってくるから、さらにややこしい
こちらは臨機応変かなぁ

935:デフォルトの名無しさん
22/11/23 20:45:01.02 KUj2Jy2fa.net
>>933
だからそこに使うなって話だぞ
何度言えばわかるんだよ?
継承しなきゃ使えないとかいうイミフな条件ついてるのにどう使う気なんだそれ?w

936:デフォルトの名無しさん
22/11/23 21:04:41.04 Gf+fcBNM0.net
>>934
列挙子の追加というのがもともとやりたいことでそれは大前提だと思う。
そこに継承を使うのは無理筋だから他の手でやれということで。

937:デフォルトの名無しさん
22/11/23 21:17:19.11 KUj2Jy2fa.net
できないことを地面に転がってしたいしたいと泣きわめくのはプログラマーとは言えないな
ツールはそこに揃ってる
なら最適な方法をみつけるのがプログラマーの仕事だ
XY問題でいつまでも時間潰すのはただの無能
↓100回読んどけ
URLリンク(ja.wikipedia.org)

938:デフォルトの名無しさん
22/11/23 21:23:05.30 QiNG678ud.net
>>984
>>922の1番がこれよね
ID:w1dmgQVP0
4番はこっち
ID:g5bfG+kA0
継承ではなく追加したい、みたいな話
包含に近いか?

939:デフォルトの名無しさん
22/11/23 21:24:33.41 QiNG678ud.net
安価ミス、、、
>>936宛ね

940:デフォルトの名無しさん
22/11/23 21:48:33.88 +3bsKbsu0.net
状態遷移ってよく知らんけど
必要に迫られるごとに似たようなことはやってるな

941:デフォルトの名無しさん
22/11/23 21:52:28.30 +3bsKbsu0.net
複数のテーブル値関数を full outer join すると面白い結果が得られるぞ
C#からは脱線するが。
機会があれば業務適用しようと思ってる

942:デフォルトの名無しさん
22/11/23 22:10:16.15 Gf+fcBNM0.net
>>935
有限状態を表現するのにenumを使うのはごく普通のことでそれに文句つけてるのはお前さんだけだが?
代わりにいったい何を使えと言うんだろう?

943:デフォルトの名無しさん
22/11/23 22:36:14.78 Mu4NVEsX0.net
状態ごとの派生クラス作ったほうが楽じゃないの
enumを使い回そうってのがまずよくわかんないわ

944:デフォルトの名無しさん
22/11/23 22:51:15.68 v/FrQePk0.net
Statelessとか見たら腰抜かしそう

945:デフォルトの名無しさん
22/11/23 23:43:15.34 rAuww2HaM.net
こんな機能があれば便利なのにってのは分からんでも無いけど
他の言語も含めた実装状況見れば少数派がデカい声出してるだけでしょ

946:デフォルトの名無しさん
22/11/24 00:18:19.16 R18LG1aZ0.net
>>942
何をってもう何度も書いただろw
enumを使うことでうまくいかないのが明白になったなら固執するのがアホ
オブジェクトやクラスはハッシュコード持ってるからenumでなくともswitchで処理できるし継承もできる
状態遷移状態遷移言ってるが教科書コピペするんじゃなく何をどうしたいのかを見据えてそれを実現しなきゃいけないぞw

947:デフォルトの名無しさん
22/11/24 00:21:21.14 6EroDtbH0.net
>>923
「継承」できないしするのはおかしいのは分かったから
enumを「拡張」したいって思う
拡張したいって用途にenumを使う
どっちがおかしいって?
その理由が単にenumがそうなってないってなら、そうあるべきだって議論はありえると思うが
>>925
別に俺は固執する気はないので、そういうことはできないってならできないで良いんだが
もっといい方法って具体的には?

948:デフォルトの名無しさん
22/11/24 00:24:41.88 R18LG1aZ0.net
例えばステートマシンのノードの一つをカーソルで参照するだけでカレントステートを表現できるしカーソルを動かせばそれはもう状態遷移だろ
ノードをオブジェクトにすれば種類によって違うプロパティやメソッドも持てる
ここにenumの入る余地などない
俺が何を言ってるかわからんとすればお前の勉強不足だから伏して教えを請え

949:デフォルトの名無しさん
22/11/24 00:54:01.50 uAP2KDnH0.net
enumて要素を限定するためのもんでしょ
拡張できたらぐちゃぐちゃじゃん
拡張した場合また別の名前なり必要で別ものになるでしょ

950:デフォルトの名無しさん
22/11/24 06:12:20.08 0c/PVttN0.net
>>949
ぐちゃぐちゃになるかどうかは使い方次第

951:デフォルトの名無しさん
22/11/24 11:04:40.36 Qxz+vdGfp.net
クラス内でしか意味がないものを他クラスで判断に使う事自体が問題じゃね?

952:デフォルトの名無しさん
22/11/24 12:05:41.62 I9DGq0SZa.net
ひょっとしてと思って「unity 状態」でググッたら質問者のやりたいことがわかったわw
キャラクタを委譲じゃなく継承させる糞コードでなんちゃってステートパターンしたいんだなw
継承したキャラクタは行動できるパターンが増えるから状態もそれによって増やしたいということだろ
キャラクタを継承させるという糞仕様から直すのが正解だがそれをしたくないならenumじゃなくクラス使えよ
その状態だけ継承させればキャラクタの継承要らないんじゃねというところに気づけばみんなが何を言ってたかわかるようになるかもしれんぞ

953:.NET MAUI HighSchool
22/11/24 12:19:13.38 DPMQyp0E0.net
Unityってクラスないの?

954:デフォルトの名無しさん
22/11/24 12:54:31.34 P04N2b5w0.net
継承とか拡張とは違うけど
enum StandardColor: {Red, Green, Blue}
enum ExtendedColor: {Teal, Turquoise}
とあった時にStandardColorとExtendedColorはそれぞれ個別の用途でも使うし
両方混ぜた集合からどちらか一方だけ選択する用途でも使いたいというのは理解できる
この場合はC#では言語的にはまだサポートされてない機能だから
サードパーティのライブラリを使うか自作するか

955:デフォルトの名無しさん
22/11/24 17:55:35.91 88NBfQl90.net
Unityでもポリモーフィズムを実現していればクラスのカプセル化が効くから
Stateで状態が切り替わる振る舞いは同じでもサブクラスで提供される機能を変えられる
ポリモーフィズムの実現が主題であってenumに依存するとかしないとかどうでもいい事な気がする

956:デフォルトの名無しさん
22/11/24 18:42:01.91 EbMeVnega.net
enumはポリモーフィズムに使うものじゃねえんだって話をしてるんだよw

957:デフォルトの名無しさん
22/11/24 19:12:02.78 88NBfQl90.net
仕様未使用はどうでもいいって言ってるのを何故復唱する必要があるのか?

958:デフォルトの名無しさん
22/11/24 19:17:15.44 6EroDtbH0.net
で、結局enumの使いどころはどこなんだ?

959:デフォルトの名無しさん
22/11/24 19:20:15.08 NYxgvrZS0.net
人生で数々のenumに触れてきて今まで継承したいと思うenumに遭遇したことがない
私は思う
不完全なenumはそれ自体がバグなのだと

960:デフォルトの名無しさん
22/11/24 19:25:58.70 88NBfQl90.net
多次元配列やジャグ配列で事足りるからenumなんぞいらんでしょ

961:デフォルトの名無しさん
22/11/24 19:26:08.06 1uxs9LdZ0.net
使えるものを使うだけじゃんよ。

962:デフォルトの名無しさん
22/11/24 19:35:14.11 JYVIn9dZa.net
使うべきところでな
enumの使い方は既に教えた
そこじゃないのも何度も言った
これでわからないボンクラは何やってもだめ

963:デフォルトの名無しさん
22/11/24 19:38:42.34 88NBfQl90.net
色々混ざってる糖質がいろんな人間が言ったことを勝手に混ぜて
訳の分からない事を言ってるのか?

964:デフォルトの名無しさん
22/11/24 19:45:03.01 JYVIn9dZa.net
色んな糖質がバカなことばかり言ってるのに区別する必要あるか?w

965:デフォルトの名無しさん
22/11/24 19:46:38.20 JYVIn9dZa.net
見りゃわかるが俺はバカなこと言ったやつをバカにしてるだけだからそれにカチンとくるやつは同じバカだぞ

966:デフォルトの名無しさん
22/11/24 19:48:18.80 88NBfQl90.net
最初に質問した奴はステートマシンとステートパターンの区別もポリモーフィズムも知らない奴だったわけだが
何でも同じに見えるというならそうなのだろう 知った事ではないし興味すらもない
勝手に吠えてればいい

967:デフォルトの名無しさん
22/11/24 20:22:54.20 JYVIn9dZa.net
enumだと都合が悪いと質問者すら発狂してるのにいつまでもそれに固執するようなのは同じレベルでしかないだろw
都合が悪いなら使ったらだめと気づこうや

968:デフォルトの名無しさん
22/11/24 20:28:32.70 88NBfQl90.net
stateにenumは使わなくてもStatePatternは作れるし元々enumは必須ですらない
そもそもポリモーフィズムのメリットが分からない奴が面白い勘違いしてるだけだろ

969:デフォルトの名無しさん
22/11/24 20:44:59.86 x2utmnLfp.net
サボらずに変換メソッド作る

970:デフォルトの名無しさん
22/11/24 20:47:40.88 0c/PVttN0.net
ステートパターンを覚えたてのキッズ同士の争いはよそでやってくれw

971:デフォルトの名無しさん
22/11/25 09:34:35.22 acUkwbrC0.net
おまいらどんだけenumでスレ消費してんだよ

972:.NET MAUI HighSchool
22/11/25 12:13:43.21 RaC0ZQGe0.net
モバイルSuicaにもReactiveUIとか使われてて
結構Rxってもう標準になりつつあるな
これ産み出したC#すごい!

973:.NET MAUI HighSchool
22/11/25 12:20:00.08 RaC0ZQGe0.net
>>4
新スレ建てようとしたけど改行が多すぎるとかで無理だった…

974:デフォルトの名無しさん
22/11/25 13:18:08.44 HZEumDr50.net
立てといた
ふらっと C#,C♯,C#(初心者用) Part157
スレリンク(tech板)
頭のextend~は念のため1行増やしておいた

975:デフォルトの名無しさん
22/11/25 18:03:50.34 b6uMxREG0.net
おつかれー。
と言いつつ埋め。

976:.NET MAUI HighSchool
22/11/25 20:24:56.18 SQhAXb/D0.net
>>974
サンキュー

977:デフォルトの名無しさん
22/11/25 20:27:00.27 Ex0f5l5+M.net
列挙型の元祖はPascal

978:.NET MAUI HighSchool
22/11/26 08:34:50.54 Ja07f46G0.net
C#isGod

979:デフォルトの名無しさん
22/11/27 23:14:07.98 MIxI7txJ0.net
ume

980:デフォルトの名無しさん
22/11/28 21:44:09.15 vwJLsOsN0.net
bool isGod = true;

981:デフォルトの名無しさん
22/11/28 22:44:48.65 SzIAkLME0.net
うめうめ

982:デフォルトの名無しさん
22/11/28 23:09:55.94 ozyLKgmt0.net
梅火星

983:デフォルトの名無しさん
22/12/09 19:49:47.35 KigkNyOs0.net
いい加減埋めようよ。

984:デフォルトの名無しさん
22/12/09 19:52:30.95 lbVfgM7Sp.net
埋め屋敷

985:デフォルトの名無しさん
22/12/09 20:08:40.11 xaxCUQ87a.net
埋めなくていいよ
次スレもいらん

986:デフォルトの名無しさん
22/12/09 20:10:07.88 8ML1skqU0.net
もッス

987:デフォルトの名無しさん
22/12/09 20:14:42.85 LL4MqSod0.net
誰も必要としてなくて草

988:デフォルトの名無しさん
22/12/09 20:16:37.36 LL4MqSod0.net
NullReferenceException

989:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 82日 5時間 37分 8秒


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

528日前に更新/249 KB
担当:undef