[過去ログ] ふらっと C#,C♯,C#(初心者用) Part150 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
890
(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 00:47:29 ID:aDB05LmB0(1/15) AAS
>>889
889(1): デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 00:18:16 ID:lKBWqYLpa(1/4) AAS
率直に言ってenumを継承するって発想自体が理解不能w

>>885
enum Eを継承してFを作れるとして、Eの型のプロパティHogeを持つクラスAを継承してBを作っても、
Hogeの型をFに変えることはできないよね?

スーパークラスでステート値を増やすって発想に無理がある気がする
継承してステータスの取りうる状態が増えるときはどーするの?
ステータスはenum使えってみんなが言うから使ったらこのザマだよ
所詮、プログラムなんか組んだことないアホの戯言だった
継承して増える可能性のある値はenumなんか使っちゃ駄目だってことだね
俺は一生使わないと思う
893: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 01:28:06 ID:aDB05LmB0(2/15) AAS
class作ってメンバでconst intにしようと思ったら
採番が面倒だから結局intになったわ
と思ったらそれもログ出力が面倒で
結局、状態クラス作ったわ
895
(3): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 02:06:49 ID:aDB05LmB0(3/15) AAS
>>894
894(1): デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb) [sage] 2021/05/11(火) 01:31:27 ID:m6WVK0Xg0(1/2) AAS
enumは基本的に定数をならべただけだから不変のものにしか使っちゃだめ

ステータスを表すクラス作れよ
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ

こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う

赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
897: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 02:10:54 ID:aDB05LmB0(4/15) AAS
>>896
896(2): デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 02:09:51 ID:lKBWqYLpa(3/4) AAS
挿入文字列はコンパイル時に解析される(実行時に解析されるわけじゃない)と思うので(知らんけど)
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?

多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
ログ出力したいんじゃん?
899: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 02:13:54 ID:aDB05LmB0(5/15) AAS
>>898
898(2): デフォルトの名無しさん (ワッチョイ 5b2d-gUNg) [sage] 2021/05/11(火) 02:12:53 ID:1Lpm83JY0(1/4) AAS
>>895
enumの定義をclassの外に出して独立させれば
何の解決にもなんなくね?
900
(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 02:16:57 ID:aDB05LmB0(6/15) AAS
>>898
赤青黄と赤青緑に継承で分岐したとき
どんなenum定義するって言ってる?
904
(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 07:38:19 ID:aDB05LmB0(7/15) AAS
は?設計書にそう書いてあって
矛盾なく動くのに何がおかしいんだよ
頭いかれてんのか
いいからこの場合どういうenumになるのかさっさと書けよクズ
906: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 08:55:42 ID:aDB05LmB0(8/15) AAS
>>905
905(1): デフォルトの名無しさん (ササクッテロラ Sp33-Fod4) [sage] 2021/05/11(火) 08:46:28 ID:8Zm8z2p2p(1) AAS
普通そう言う場合enum使わんしょ
継承後色がどうなるか確定的じゃないし
stateを普通にintで管理して、それにRGB入りの配列で色を割り当てたら?
それだとプログラムの拡張の際に取りうる値が増える(実行時ではない。ソース修正時)可能性がある項目は全部enum使えないじゃん

まあ、実際使えないけど
908
(2): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 10:10:24 ID:aDB05LmB0(9/15) AAS
>>907
907(1): デフォルトの名無しさん (アウアウカー Sa7b-KFFl) [sage] 2021/05/11(火) 09:52:12 ID:FCSidwoba(1) AAS
>>904
実装上の都合で赤青ランプに後付けで黄色を取り付けたのだから、色を表す定数として赤青のenumとは別に黄色の定数を定義することになるのは自然だろう。
それをあたかも三色同格のランプだと見せかけてるんだから、定数についても見かけ上同列に扱うためのenumを新たに定義しなければならないのは仕方ない。設計がいびつなのだから、内部処理的にもいびつになる。
何言ってるかわかってる?
基底に20個ぐらいステータスあってさらに増え続けてるとき
継承した分だけenumに同じステータスを追加しまくれっていってんだよ
継承10も20もやったら大変だぞ
もう実際はハードごと20種類以上追加しないといけなくてやってられないから
俺はenumはゴミと切り捨てたけどね
911: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 11:02:46 ID:aDB05LmB0(10/15) AAS
>>909
909(1): デフォルトの名無しさん (ブーイモ MM97-rYak) [sage] 2021/05/11(火) 10:33:16 ID:aLadY06bM(1) AAS
>>908
だから追加できたところでそのステータスを何に使うんだよ
増やしたところで基底型では扱えない未知の値なんだから継承の意味がないだろ
は?
お前、状態遷移組んだこと無さそうだからいいやw
913: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 11:06:54 ID:aDB05LmB0(11/15) AAS
>>912
912(1): デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 11:03:10 ID:8BKOP9bia(1) AAS
>>908
まだ言っとるんだねw
だから根本的に考え方が間違ってるんだってw

特化/汎化って言い方をすると思うけど、継承っていうのは
汎用的なものを特定用途に「特化」するものなんだってw

だから>>902に書いた通り汎用性が小さい自然数を継承して整数にする、って考えは根本的におかしいし、
汎用性が小さい2ステートを継承して3ステートの物にするというのも間違ってる

考え方が逆だ。
多ステートの特殊形が3ステートで、3ステートの特殊形が赤青黄でしょ。
赤青のロジックの一部を赤青黄で使いまわしたいなら継承以外の方法で考えましょう。

例えば、RGB.RをRB.Rに変換する変換関数は書けるんだから、
Color ToColor(RGB rgb){ ... }
というメソッドは、中で
Color ToColor{RB rb){ ...}
と使いまわすことはできる
赤青黄はあくまで例であって実際にはハードの差分管理してんだよ
だから全部定義し直したらものすごい量になっちゃうの
914: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 11:11:17 ID:aDB05LmB0(12/15) AAS
はっきり言うけど
べき論は結構だけど
enum型がこの仕様のままなら
なんにも使えない
もしくは使わないほうがいいと思う俺は
915
(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 11:14:26 ID:aDB05LmB0(13/15) AAS
じゃあ、いっそenumって定義をやめよう
state型が必要です

これでおk?

おそらくこれができたら
enumなんか誰も使わない
それだけの話
920: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 13:34:53 ID:aDB05LmB0(14/15) AAS
>>917
917(1): デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb) [sage] 2021/05/11(火) 11:18:15 ID:m6WVK0Xg0(2/2) AAS
>>895
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから

Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
そんなの未来永劫保証できないじゃん
enum作った人本当にバカなんだね
使えないもん作ってろよって感じ
921
(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 13:38:39 ID:aDB05LmB0(15/15) AAS
>>919
919(3): デフォルトの名無しさん (ワッチョイ a662-W8a5) [sage] 2021/05/11(火) 12:55:03 ID:9XfnnIxq0(1/4) AAS
どれの話をしてるのかわからんけど困ったことない

Enumでやる
virtual List<enum> Lamps => 赤、青を返す
override List<enum> Lamps => base.Lampsと黄を返す

Flagでやる
virtual Color Lamp => Color.赤 | Color.青
override Color Lamp => base.Lamp | Color.黄

Flag側で継承
[flag]
enum Color{
赤=1,
青=2,
黄=4,
Hoge=赤 | 青,
Hoge2=Hoge | 黄
}
基底に黒とグレーを追加
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s