!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://mevius.5ch.net/test/read.cgi/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://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
http://referencesource.microsoft.com/
・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
探検
ふらっと C#,C♯,C#(初心者用) Part150
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ 2b02-+i0H)
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0866デフォルトの名無しさん (スプッッ Sd2a-5xeF)
2021/05/10(月) 12:08:15.82ID:EOKyCo1ad 下手に英語やローマ字使うより日本のプロパティ名を使った方が分かり易いこともありますな
敢えて外人だけに意味を理解しにくくさせたいときなんかにも使えそうですな
敢えて外人だけに意味を理解しにくくさせたいときなんかにも使えそうですな
867デフォルトの名無しさん (ワッチョイ 3ebb-EEf/)
2021/05/10(月) 12:21:43.63ID:XZUy8xNJ0 >>866
どんな場面を想定しているのか、すげぇ気になる
どんな場面を想定しているのか、すげぇ気になる
868デフォルトの名無しさん (ワッチョイ 6642-jjtP)
2021/05/10(月) 12:34:14.65ID:3Mkz5DyC0 enumの要素が日本語だとコメント要らずではある
本体がアルファベットならインテリセンスも問題ない
本体がアルファベットならインテリセンスも問題ない
869デフォルトの名無しさん (ワッチョイ fbad-t4JP)
2021/05/10(月) 12:37:31.60ID:85dwBuQM0 国民健康保険保険者番号、という単語を変数名にするときは、だいぶ議論した上で、
kokuho_hnoになったな。
national_health_insurance_insurer_numberはとても反発が大きかった。
kokuho_hnoになったな。
national_health_insurance_insurer_numberはとても反発が大きかった。
870デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 12:56:28.88ID:2MQuNC0ra 英語力がボトルネックになってるケースはむしろ少ない気がするね。
命名下手な人は日本語でも意味不明な名前付けそうな気がする
というより、だいたい命名以前の問題で既に失敗してるんだよね
普通のプログラマはそれが何をするメソッドなのか、「何者」なのかを
明確にしてからメソッドを書き始める。
命名で止まっちゃう人はそこがいい加減なんだよね。抽象化が出来てない。
命名下手な人は日本語でも意味不明な名前付けそうな気がする
というより、だいたい命名以前の問題で既に失敗してるんだよね
普通のプログラマはそれが何をするメソッドなのか、「何者」なのかを
明確にしてからメソッドを書き始める。
命名で止まっちゃう人はそこがいい加減なんだよね。抽象化が出来てない。
871デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 13:00:52.85ID:y0jj8Ah00 enumって継承できない?
872デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/10(月) 15:31:20.10ID:lCZGOQhNF873デフォルトの名無しさん (ワッチョイ 9f25-Fod4)
2021/05/10(月) 15:37:52.56ID:DLVUJfkF0 >>869
プロジェクト全体で使えるならnhi_insurer_numberみたいな略語ならありだと思うけどね
プロジェクト全体で使えるならnhi_insurer_numberみたいな略語ならありだと思うけどね
874デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 15:58:21.88ID:l/O9+A2Na グロサリーは作った方がいいけどNHIで辞書に載ってるから(普通何だこれと思ったらググるよね?)
それはNhiIDでいいでしょ
それはNhiIDでいいでしょ
875デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/10(月) 16:21:26.47ID:lCZGOQhNF876デフォルトの名無しさん (ワッチョイ fbad-t4JP)
2021/05/10(月) 17:51:27.04ID:85dwBuQM0 俺も別に良いと思ったんだけど、とにかく反発がやばかった。
HNI_Insurer_No推しだった。
俺的には番号とついてるものにIDはまずい気がする。
HNI_Insurer_No推しだった。
俺的には番号とついてるものにIDはまずい気がする。
877デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/10(月) 17:56:24.33ID:giJ6lOgz0 kokuho_hnoだと保険者番号と被保険者番号の区別がつけにくいので
nhi_insurer_numberとnhi_numberくらいがいい気がする
kokuho_insurer_numberでも別にいいかな
nhi_insurer_numberとnhi_numberくらいがいい気がする
kokuho_insurer_numberでも別にいいかな
878デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/10(月) 18:24:14.99ID:id38dQYPr 変数名は単体で使ってるのか?
それともPersonクラスなどののメンバーなのかによって扱いが違う
それともPersonクラスなどののメンバーなのかによって扱いが違う
879デフォルトの名無しさん (スププ Sd8a-t4JP)
2021/05/10(月) 18:31:34.09ID:Jv8jAyYxd >>877
被保険者番号はhhnoという悲しいスタイルに。。
被保険者番号はhhnoという悲しいスタイルに。。
880デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/10(月) 18:37:55.44ID:l/O9+A2Na >>876
識別のために割り当てる符号は数字だろうがギリシャ文字だろうがID(identifier)でしょうw
ただ、保険者(業者)と被保険者を区別する必要があることに気づかなかった
この場合NhiIDはまずいね
まあスレ違い甚だしいな
識別のために割り当てる符号は数字だろうがギリシャ文字だろうがID(identifier)でしょうw
ただ、保険者(業者)と被保険者を区別する必要があることに気づかなかった
この場合NhiIDはまずいね
まあスレ違い甚だしいな
881デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/10(月) 18:42:01.34ID:giJ6lOgz0 hhnoかぁ
nhiもそうだけどhhnoやhnoみたいな普段の会話で使わない略語よりも
kokuho_hokensha_noとkokuho_hihokensha_noみたいに
普段の会話で使う日本語読みに寄せたほうが何かと良さそうだね
nhiもそうだけどhhnoやhnoみたいな普段の会話で使わない略語よりも
kokuho_hokensha_noとkokuho_hihokensha_noみたいに
普段の会話で使う日本語読みに寄せたほうが何かと良さそうだね
882デフォルトの名無しさん (ワッチョイ aa7c-ibqQ)
2021/05/10(月) 18:42:58.08ID:zy2rFAto0 番号なのにnoとか付けないってセンスなくね?
883デフォルトの名無しさん (JP 0H0a-aC2w)
2021/05/10(月) 18:46:43.73ID:T4WFU4KFH 被保険者番号みたいなのは
コーディング規約をいじる裁量があれば日本語変数名が最強なんだよなあ
入力はちょっと大変だけど、視認性最強でドキュメントコメント不要になるし
英字表記に悩んだり表記ゆれに煩わされることもない、変な英略語覚えるのに頭使わなくて済む
コーディング規約をいじる裁量があれば日本語変数名が最強なんだよなあ
入力はちょっと大変だけど、視認性最強でドキュメントコメント不要になるし
英字表記に悩んだり表記ゆれに煩わされることもない、変な英略語覚えるのに頭使わなくて済む
884デフォルトの名無しさん (オッペケ Sr33-jjtP)
2021/05/10(月) 18:46:58.67ID:id38dQYPr みんな業務はjavaの人なんだなと
885デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 21:46:48.97ID:y0jj8Ah00 基底クラスでenumのステータス持ってて
継承してそのステータスの種類が増えるとき
enumが継承できないとステータスの種類が増やせなくない?
継承してそのステータスの種類が増えるとき
enumが継承できないとステータスの種類が増やせなくない?
886デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/10(月) 21:56:52.64ID:/NuMOBBIM >>885
enumは決まった値しか取り得ない型
継承して取りうる値が増えたら、それは基底クラスにおける「決まった値のみを取る」という規約を破ってしまうことになる
規約を破らずに値を追加するには、継承せず普通にenumに追加しなければならない
enumは決まった値しか取り得ない型
継承して取りうる値が増えたら、それは基底クラスにおける「決まった値のみを取る」という規約を破ってしまうことになる
規約を破らずに値を追加するには、継承せず普通にenumに追加しなければならない
887デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/10(月) 22:00:17.01ID:y0jj8Ah00888デフォルトの名無しさん (ワッチョイ 9f5f-DjaX)
2021/05/10(月) 22:38:40.75ID:8qfIqwaR0889デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 00:18:16.99ID:lKBWqYLpa 率直に言ってenumを継承するって発想自体が理解不能w
>>885
enum Eを継承してFを作れるとして、Eの型のプロパティHogeを持つクラスAを継承してBを作っても、
Hogeの型をFに変えることはできないよね?
スーパークラスでステート値を増やすって発想に無理がある気がする
>>885
enum Eを継承してFを作れるとして、Eの型のプロパティHogeを持つクラスAを継承してBを作っても、
Hogeの型をFに変えることはできないよね?
スーパークラスでステート値を増やすって発想に無理がある気がする
890デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 00:47:29.66ID:aDB05LmB0 >>889
継承してステータスの取りうる状態が増えるときはどーするの?
ステータスはenum使えってみんなが言うから使ったらこのザマだよ
所詮、プログラムなんか組んだことないアホの戯言だった
継承して増える可能性のある値はenumなんか使っちゃ駄目だってことだね
俺は一生使わないと思う
継承してステータスの取りうる状態が増えるときはどーするの?
ステータスはenum使えってみんなが言うから使ったらこのザマだよ
所詮、プログラムなんか組んだことないアホの戯言だった
継承して増える可能性のある値はenumなんか使っちゃ駄目だってことだね
俺は一生使わないと思う
891デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 01:06:35.85ID:lKBWqYLpa >>890
まずそういうケースがあんまりありそうもない気がするけどあるとして、
(1) ベースクラスを書く段階でサブクラスでありうる拡張を織り込んで予約しておく
(2) それが無理なら
enum BorderStyle {None, Single, Double, ExtendedStyle };
みたいにしておいて、BorderStyle == BorderStyle.ExtendedStyle
の時には別のプロパティでスタイルが決まるようにする
まずそういうケースがあんまりありそうもない気がするけどあるとして、
(1) ベースクラスを書く段階でサブクラスでありうる拡張を織り込んで予約しておく
(2) それが無理なら
enum BorderStyle {None, Single, Double, ExtendedStyle };
みたいにしておいて、BorderStyle == BorderStyle.ExtendedStyle
の時には別のプロパティでスタイルが決まるようにする
892デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/11(火) 01:27:29.73ID:qWgZ839v0 > Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
> Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.")
上の書き方の場合、文字列部分を定数で宣言できたってメリットあったと思うんだけど、$使う文字列挿入だとできないよね
使い分ければ良いだけだと思うんだけど、他に冴えたやり方あったりする?
> Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.")
上の書き方の場合、文字列部分を定数で宣言できたってメリットあったと思うんだけど、$使う文字列挿入だとできないよね
使い分ければ良いだけだと思うんだけど、他に冴えたやり方あったりする?
893デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 01:28:06.43ID:aDB05LmB0 class作ってメンバでconst intにしようと思ったら
採番が面倒だから結局intになったわ
と思ったらそれもログ出力が面倒で
結局、状態クラス作ったわ
採番が面倒だから結局intになったわ
と思ったらそれもログ出力が面倒で
結局、状態クラス作ったわ
894デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/11(火) 01:31:27.37ID:m6WVK0Xg0 enumは基本的に定数をならべただけだから不変のものにしか使っちゃだめ
ステータスを表すクラス作れよ
ステータスを表すクラス作れよ
895デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:06:49.74ID:aDB05LmB0 >>894
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ
こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う
赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ
こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う
赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
896デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 02:09:51.01ID:lKBWqYLpa 挿入文字列はコンパイル時に解析される(実行時に解析されるわけじゃない)と思うので(知らんけど)
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?
多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?
多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
897デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:10:54.04ID:aDB05LmB0 >>896
ログ出力したいんじゃん?
ログ出力したいんじゃん?
898デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 02:12:53.21ID:1Lpm83JY0 >>895
enumの定義をclassの外に出して独立させれば
enumの定義をclassの外に出して独立させれば
899デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:13:54.09ID:aDB05LmB0 >>898
何の解決にもなんなくね?
何の解決にもなんなくね?
900デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 02:16:57.22ID:aDB05LmB0901デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 02:38:14.36ID:1Lpm83JY0902デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 02:41:03.08ID:lKBWqYLpa だからそもそも根本的に考え方がおかしいと思うよw
集合論的に考えてみて
例えば、
自然数⊂整数
ってことは明らかに「整数 is 自然数」ではないでしょ。
自然数を継承して整数を作る、とう発想がそもそもおかしい。
集合論的に考えてみて
例えば、
自然数⊂整数
ってことは明らかに「整数 is 自然数」ではないでしょ。
自然数を継承して整数を作る、とう発想がそもそもおかしい。
903デフォルトの名無しさん (ワッチョイ 8a52-KFFl)
2021/05/11(火) 03:32:52.71ID:/5H26xT50904デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 07:38:19.05ID:aDB05LmB0 は?設計書にそう書いてあって
矛盾なく動くのに何がおかしいんだよ
頭いかれてんのか
いいからこの場合どういうenumになるのかさっさと書けよクズ
矛盾なく動くのに何がおかしいんだよ
頭いかれてんのか
いいからこの場合どういうenumになるのかさっさと書けよクズ
905デフォルトの名無しさん (ササクッテロラ Sp33-Fod4)
2021/05/11(火) 08:46:28.86ID:8Zm8z2p2p 普通そう言う場合enum使わんしょ
継承後色がどうなるか確定的じゃないし
stateを普通にintで管理して、それにRGB入りの配列で色を割り当てたら?
継承後色がどうなるか確定的じゃないし
stateを普通にintで管理して、それにRGB入りの配列で色を割り当てたら?
906デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 08:55:42.36ID:aDB05LmB0907デフォルトの名無しさん (アウアウカー Sa7b-KFFl)
2021/05/11(火) 09:52:12.74ID:FCSidwoba >>904
実装上の都合で赤青ランプに後付けで黄色を取り付けたのだから、色を表す定数として赤青のenumとは別に黄色の定数を定義することになるのは自然だろう。
それをあたかも三色同格のランプだと見せかけてるんだから、定数についても見かけ上同列に扱うためのenumを新たに定義しなければならないのは仕方ない。設計がいびつなのだから、内部処理的にもいびつになる。
実装上の都合で赤青ランプに後付けで黄色を取り付けたのだから、色を表す定数として赤青のenumとは別に黄色の定数を定義することになるのは自然だろう。
それをあたかも三色同格のランプだと見せかけてるんだから、定数についても見かけ上同列に扱うためのenumを新たに定義しなければならないのは仕方ない。設計がいびつなのだから、内部処理的にもいびつになる。
908デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 10:10:24.00ID:aDB05LmB0 >>907
何言ってるかわかってる?
基底に20個ぐらいステータスあってさらに増え続けてるとき
継承した分だけenumに同じステータスを追加しまくれっていってんだよ
継承10も20もやったら大変だぞ
もう実際はハードごと20種類以上追加しないといけなくてやってられないから
俺はenumはゴミと切り捨てたけどね
何言ってるかわかってる?
基底に20個ぐらいステータスあってさらに増え続けてるとき
継承した分だけenumに同じステータスを追加しまくれっていってんだよ
継承10も20もやったら大変だぞ
もう実際はハードごと20種類以上追加しないといけなくてやってられないから
俺はenumはゴミと切り捨てたけどね
909デフォルトの名無しさん (ブーイモ MM97-rYak)
2021/05/11(火) 10:33:16.06ID:aLadY06bM910デフォルトの名無しさん (ワッチョイ 73b5-fceI)
2021/05/11(火) 10:45:31.24ID:fJhAJw720 ♪燃〜〜えろよ燃えろ〜〜よ〜〜
911デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:02:46.92ID:aDB05LmB0912デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 11:03:10.18ID:8BKOP9bia >>908
まだ言っとるんだねw
だから根本的に考え方が間違ってるんだってw
特化/汎化って言い方をすると思うけど、継承っていうのは
汎用的なものを特定用途に「特化」するものなんだってw
だから>>902に書いた通り汎用性が小さい自然数を継承して整数にする、って考えは根本的におかしいし、
汎用性が小さい2ステートを継承して3ステートの物にするというのも間違ってる
考え方が逆だ。
多ステートの特殊形が3ステートで、3ステートの特殊形が赤青黄でしょ。
赤青のロジックの一部を赤青黄で使いまわしたいなら継承以外の方法で考えましょう。
例えば、RGB.RをRB.Rに変換する変換関数は書けるんだから、
Color ToColor(RGB rgb){ ... }
というメソッドは、中で
Color ToColor{RB rb){ ...}
と使いまわすことはできる
まだ言っとるんだねw
だから根本的に考え方が間違ってるんだってw
特化/汎化って言い方をすると思うけど、継承っていうのは
汎用的なものを特定用途に「特化」するものなんだってw
だから>>902に書いた通り汎用性が小さい自然数を継承して整数にする、って考えは根本的におかしいし、
汎用性が小さい2ステートを継承して3ステートの物にするというのも間違ってる
考え方が逆だ。
多ステートの特殊形が3ステートで、3ステートの特殊形が赤青黄でしょ。
赤青のロジックの一部を赤青黄で使いまわしたいなら継承以外の方法で考えましょう。
例えば、RGB.RをRB.Rに変換する変換関数は書けるんだから、
Color ToColor(RGB rgb){ ... }
というメソッドは、中で
Color ToColor{RB rb){ ...}
と使いまわすことはできる
913デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:06:54.31ID:aDB05LmB0914デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:11:17.08ID:aDB05LmB0 はっきり言うけど
べき論は結構だけど
enum型がこの仕様のままなら
なんにも使えない
もしくは使わないほうがいいと思う俺は
べき論は結構だけど
enum型がこの仕様のままなら
なんにも使えない
もしくは使わないほうがいいと思う俺は
915デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 11:14:26.45ID:aDB05LmB0 じゃあ、いっそenumって定義をやめよう
state型が必要です
これでおk?
おそらくこれができたら
enumなんか誰も使わない
それだけの話
state型が必要です
これでおk?
おそらくこれができたら
enumなんか誰も使わない
それだけの話
916デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/11(火) 11:14:32.61ID:FWZS8iTBF >enumはゴミ
知ってた
知ってた
917デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/11(火) 11:18:15.50ID:m6WVK0Xg0 >>895
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから
Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから
Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
918デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 12:02:27.73ID:N41oKzlma919デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 12:55:03.04ID:9XfnnIxq0 どれの話をしてるのかわからんけど困ったことない
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 | 黄
}
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 | 黄
}
920デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 13:34:53.46ID:aDB05LmB0921デフォルトの名無しさん (ワッチョイ bea7-wGCM)
2021/05/11(火) 13:38:39.20ID:aDB05LmB0 >>919
基底に黒とグレーを追加
基底に黒とグレーを追加
922デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 14:03:01.12ID:9XfnnIxq0923デフォルトの名無しさん (アウアウウー Sa1f-dxvU)
2021/05/11(火) 14:27:53.86ID:7X7kMfyca >>919
enumの利点はコンパイル時に名前の集合を型として定義できる、
名前の集合が確定していて、だからインテリセンスが使えたり
集合に含まれないはずの名前が使われている間違いをコンパイル時に検出できることなので
それは代用にならんでしょ。
質問している人の問題はたぶん継承に固執してること。
部分集合を再利用して上位集合を定義したいって問題意識は分からんでもないけど、
emumなんてただの名前の集合なんだからそういう場合はコピペ継承するのが多分正解。
enumの利点はコンパイル時に名前の集合を型として定義できる、
名前の集合が確定していて、だからインテリセンスが使えたり
集合に含まれないはずの名前が使われている間違いをコンパイル時に検出できることなので
それは代用にならんでしょ。
質問している人の問題はたぶん継承に固執してること。
部分集合を再利用して上位集合を定義したいって問題意識は分からんでもないけど、
emumなんてただの名前の集合なんだからそういう場合はコピペ継承するのが多分正解。
924デフォルトの名無しさん (エアペラ SDd7-/hng)
2021/05/11(火) 14:31:08.99ID:pmLjbtQdD 適材適所
925デフォルトの名無しさん (ブーイモ MMd6-D3Lk)
2021/05/11(火) 14:40:19.26ID:/TD/rkCHM C#や諸々の言語はそもそも、継承の仕様が出来損ないなんだよね
Java 16みたいにSealed Classを定義できるなら、まだしもねぇ
どんなクラスでも継承できます、なんて言われてもね
全てのサブクラスの面倒を見るなんて、事実上不可能だろ
だからサブクラスを限定する仕組みが必要なのだが…
C#はまだまだ、遅れてるね
Java 16みたいにSealed Classを定義できるなら、まだしもねぇ
どんなクラスでも継承できます、なんて言われてもね
全てのサブクラスの面倒を見るなんて、事実上不可能だろ
だからサブクラスを限定する仕組みが必要なのだが…
C#はまだまだ、遅れてるね
926デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 14:45:04.15ID:9XfnnIxq0927デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 15:00:11.95ID:1Lpm83JY0928デフォルトの名無しさん (ワッチョイ a662-W8a5)
2021/05/11(火) 15:07:01.36ID:9XfnnIxq0 自分ならカスタム属性と拡張メソッド作って、集合.Hoge.Colors()で一覧を取れるようにするかな
まあケースバイケース
enum 集合{
[AddColor(Color.赤, Color.青)]
Hoge,
[InheriteColor(集合.Hoge)]
[AddColor(Color.黄)]
Hoge2
}
まあケースバイケース
enum 集合{
[AddColor(Color.赤, Color.青)]
Hoge,
[InheriteColor(集合.Hoge)]
[AddColor(Color.黄)]
Hoge2
}
929デフォルトの名無しさん (ワッチョイ be2c-5KFm)
2021/05/11(火) 15:14:49.86ID:Fjpe2RX80 >>927
そっちじゃなくて継承できる型を限定する機能だね
ShapeインターフェイスをRectangleクラスとCircleクラスのみ実装可能にする
他の奴がTriangleクラスを作ってShapeを実装するのは認めない
そっちじゃなくて継承できる型を限定する機能だね
ShapeインターフェイスをRectangleクラスとCircleクラスのみ実装可能にする
他の奴がTriangleクラスを作ってShapeを実装するのは認めない
930デフォルトの名無しさん (ワッチョイ 5b2d-gUNg)
2021/05/11(火) 15:43:37.19ID:1Lpm83JY0931デフォルトの名無しさん (ワッチョイ 2a01-Yqly)
2021/05/11(火) 16:04:08.87ID:gVDvfxdk0 >>919
>override List<enum> Lamps => base.Lampsと黄を返す
これはEnumでやってるんじゃなくListでやってるだけのような・・
取りうる状態の範囲をEnumで表現してないしコンパイル時のチェックも無理だよね
>override Color Lamp => base.Lamp | Color.黄
こっちも型としてはColorになるので既存のColor定義が赤と青だけなら
全く別のEnumを新しく定義することか、既存の定義自体を変更して黄を足すかになるので
既存のコードを維持したまま新しいコードを追加することはできないよね?
Enumを使うべきユースケースじゃないからできなくて当たり前なんだけどさ
>override List<enum> Lamps => base.Lampsと黄を返す
これはEnumでやってるんじゃなくListでやってるだけのような・・
取りうる状態の範囲をEnumで表現してないしコンパイル時のチェックも無理だよね
>override Color Lamp => base.Lamp | Color.黄
こっちも型としてはColorになるので既存のColor定義が赤と青だけなら
全く別のEnumを新しく定義することか、既存の定義自体を変更して黄を足すかになるので
既存のコードを維持したまま新しいコードを追加することはできないよね?
Enumを使うべきユースケースじゃないからできなくて当たり前なんだけどさ
932デフォルトの名無しさん (ワッチョイ 2fb0-DjaX)
2021/05/11(火) 16:18:03.82ID:qWgZ839v0 >>896
文字列の雛形をDBに持たせて、パラメータ部分を置換して出力するみたいなことやってたのよ
『置換して出力』部分を$使う挿入文字列で置き換えられたらいいなって夢想した
pythonの似たような機能でキーワード引数による指定が出来るから、似たようなこと出来ないかなって
> print('{first} and {second}'.format(first=a, second=b))
string.format使えばいいだけなんだけどね
文字列の雛形をDBに持たせて、パラメータ部分を置換して出力するみたいなことやってたのよ
『置換して出力』部分を$使う挿入文字列で置き換えられたらいいなって夢想した
pythonの似たような機能でキーワード引数による指定が出来るから、似たようなこと出来ないかなって
> print('{first} and {second}'.format(first=a, second=b))
string.format使えばいいだけなんだけどね
933デフォルトの名無しさん (テテンテンテン MMe6-I8iA)
2021/05/11(火) 20:06:26.01ID:7D4cBYXWM >>932のやりたいことが挿入文字列を共通化したいってことならおとなしくメソッド化して
string ToHelloText(string name, DateTime date) => $"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.";
で
Console.WriteLine(ToHelloText(name, date));
みたいな使い方するほうがいいんじゃ
string ToHelloText(string name, DateTime date) => $"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.";
で
Console.WriteLine(ToHelloText(name, date));
みたいな使い方するほうがいいんじゃ
934デフォルトの名無しさん (エムゾネ FF8a-dxvU)
2021/05/12(水) 09:24:40.12ID:HCx7UYF5F プラごみを減らすためにレジ袋有料化するって話と似てるな
そもそもピントがずれてるし前提も可笑しい
そもそもピントがずれてるし前提も可笑しい
935デフォルトの名無しさん (ワッチョイ be2c-5KFm)
2021/05/12(水) 14:46:53.00ID:kcMRoKH40 リソースで他言語対応すると考えると欲しい気持ちは分かる
"Hello, I'm {givenName} {surname}."
"こんにちは、私は {surname}{givenName} です。"
みたいに書きたい
"Hello, I'm {givenName} {surname}."
"こんにちは、私は {surname}{givenName} です。"
みたいに書きたい
936デフォルトの名無しさん (ブーイモ MM97-tepi)
2021/05/12(水) 14:52:52.50ID:KOpdkLhcM All your base are belong to us
937デフォルトの名無しさん (オッペケ Sr33-7fsT)
2021/05/12(水) 18:25:12.05ID:l5b/FJ1ur evalをやりたいと言うことだな
テスト不可になるからいらんけど
テスト不可になるからいらんけど
938デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H)
2021/05/12(水) 22:11:27.01ID:rLfxFtSp0 c#ってvisual studioインストールしたときに入ってるコンパイラじゃなくて
.Net 5に移行するのが良いでしょうか?
Microsoftも.Net 5移行を推進していきますかね?
.Net 5に移行するのが良いでしょうか?
Microsoftも.Net 5移行を推進していきますかね?
939デフォルトの名無しさん (ラクッペペ MMe6-jV+5)
2021/05/12(水) 22:18:36.03ID:ApiPrDZMM 同じもの
940デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H)
2021/05/12(水) 23:16:35.91ID:rLfxFtSp0 そうだったんですね!
941デフォルトの名無しさん (ワッチョイ 0bda-jV+5)
2021/05/13(木) 01:52:12.91ID:Q5JRmth30 コンパイラは同じ
実行環境やフレームワークは違う
実行環境やフレームワークは違う
942デフォルトの名無しさん (アウアウクー MM23-Wdz7)
2021/05/14(金) 12:23:19.63ID:4kCY9pobM まさかC#でメンバ変数名のprefixにアンダーバー付けてないやつおる?
https://anond.hatelabo.jp/20210513215649
https://anond.hatelabo.jp/20210513215649
943デフォルトの名無しさん (ワッチョイ d1e3-Adon)
2021/05/14(金) 12:27:21.06ID:hPLmdAiv0 なんで今更感が半端ない
アンダースコアつけて怒られた記憶あるわ
アンダースコアつけて怒られた記憶あるわ
944デフォルトの名無しさん (ブーイモ MM5b-M3SR)
2021/05/14(金) 12:32:54.76ID:o+OksdyUM アンスコあかんの?
945デフォルトの名無しさん (アウアウクー MM23-Wdz7)
2021/05/14(金) 12:45:33.90ID:4kCY9pobM 今まで記載がずっとなくて、同じMicrosoftの子会社が出してるStylecopっていうコード解析ツールの言ってることなら正しいだろうって風潮だったんだけど逆転敗訴した感じ
946デフォルトの名無しさん (ワッチョイ 1fb0-sort)
2021/05/14(金) 12:49:56.23ID:idb/Si4k0 前までただのキャメルだったよな? 何かしっくりこないなあと思いつつあわせてたのに
というか>>942はちゃんとprivateのメンバ変数って書いてくれ
というか>>942はちゃんとprivateのメンバ変数って書いてくれ
947デフォルトの名無しさん (ワッチョイ ab2c-mHP1)
2021/05/14(金) 12:59:44.72ID:ty8DhYlQ0 俺は今まで通り m_ + PascalCase でいく
948デフォルトの名無しさん (エアペラ SD73-f+4d)
2021/05/14(金) 13:15:24.24ID:fGdsMbaSD キャメルケースの事をキャメルって略すのはどうも抵抗がある
949デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/14(金) 13:52:15.03ID:xt/CNvYd0 スコープで付けると便利だけどね
gグローバルgUnko
mメンバmUnko
in引数入力inUnko
out引数出力outUnko
valローカルvalUnko
gグローバルgUnko
mメンバmUnko
in引数入力inUnko
out引数出力outUnko
valローカルvalUnko
950デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 14:00:51.83ID:E7dr4uiDa >>942
さすがにアホなガイドラインでほとんど同意は得られない気がする。
バッキングフィールド限定なら少なくとも俺は賛成するけど。
まあ、普通のフィルドもバッキングフィールドも出番減ってるから
どうでもいいと言えばどうでもいいかも
さすがにアホなガイドラインでほとんど同意は得られない気がする。
バッキングフィールド限定なら少なくとも俺は賛成するけど。
まあ、普通のフィルドもバッキングフィールドも出番減ってるから
どうでもいいと言えばどうでもいいかも
951デフォルトの名無しさん (ワッチョイ 5342-Adon)
2021/05/14(金) 14:04:32.36ID:vWTxavwv0 アンダースコアはライブラリと被った記憶
C言語時代だが
C言語時代だが
952デフォルトの名無しさん (ワッチョイ aba7-4lYq)
2021/05/14(金) 14:10:10.14ID:xt/CNvYd0 ぶっちゃけ客先のカスタマイズできない環境で文字ちっちゃくて見にくいときあるからイラネ
953デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 14:16:07.40ID:E7dr4uiDa しかし、_でプリフィクスしとくとインテリセンスでフィールドが一覧できて便利だよ、
ってコメントは泣けてくるねw
普通逆じゃないかw
インテリセンスの候補に登場して欲しくない奴を_でプリフィクスするのが普通のセンスだと思うけど。
ってコメントは泣けてくるねw
普通逆じゃないかw
インテリセンスの候補に登場して欲しくない奴を_でプリフィクスするのが普通のセンスだと思うけど。
954デフォルトの名無しさん (ワッチョイ 1fb0-sort)
2021/05/14(金) 14:36:58.65ID:idb/Si4k0 >>953
そのコメントどこに書いてある?
ところで別の話なんだけど、
とあるデータの集計や加工をメソッドチェーンで書きたい考えと、その集計や加工をデータとは別のクラスかつステートレスで書きたい考えって両立できるのかな?
拡張メソッド使うくらい?
そのコメントどこに書いてある?
ところで別の話なんだけど、
とあるデータの集計や加工をメソッドチェーンで書きたい考えと、その集計や加工をデータとは別のクラスかつステートレスで書きたい考えって両立できるのかな?
拡張メソッド使うくらい?
955デフォルトの名無しさん (ワッチョイ ff01-vB/y)
2021/05/14(金) 16:32:10.35ID:0kdm8qdh0956デフォルトの名無しさん (ワッチョイ cb68-gSvD)
2021/05/14(金) 19:49:54.05ID:xeRYEvYS0 オセロのプログラム作っています。
オセロが盤面にの上にくると影を描きたいのですが
これはフォームアプリでできますか?
オセロが盤面にの上にくると影を描きたいのですが
これはフォームアプリでできますか?
957デフォルトの名無しさん (ワッチョイ f1da-Wdz7)
2021/05/14(金) 20:01:11.64ID:7GBYwo1U0 >>946
publicなメンバ変数って一般的か?
publicなメンバ変数って一般的か?
958デフォルトの名無しさん (ブーイモ MMe1-6eZC)
2021/05/14(金) 20:03:38.54ID:7vyBBBSUM959デフォルトの名無しさん (スププ Sdd7-Ratl)
2021/05/14(金) 20:38:27.45ID:8fzMB91td >>956
あくまでもWinFormでやるならGDI+っていう機能を調べて、
円をキャンバスに描けばオセロ程度のアプリケーションを作るのは楽かもね。
そりゃあ本気でゲーム作るならUnityだろうけど、
オセロの内容にこだわるなら、コンソールで十分なんだけど。
あくまでもWinFormでやるならGDI+っていう機能を調べて、
円をキャンバスに描けばオセロ程度のアプリケーションを作るのは楽かもね。
そりゃあ本気でゲーム作るならUnityだろうけど、
オセロの内容にこだわるなら、コンソールで十分なんだけど。
960デフォルトの名無しさん (ワッチョイ 03da-as9D)
2021/05/14(金) 20:41:16.98ID:95pD/4XI0 WPFならDropShadowEffectで一発
961デフォルトの名無しさん (ワッチョイ 3bad-z8Fo)
2021/05/14(金) 21:13:06.87ID:VM2FDDZI0962デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 21:29:52.56ID:d3AihMu6a963デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 21:45:19.42ID:Hk5V+gvwr m_とかアンダースコアつけるとかは原始人に見えてしまう
964デフォルトの名無しさん (アウアウウー Sa1d-JrGs)
2021/05/14(金) 21:49:55.96ID:d3AihMu6a フィールドにmつけるのは割とそんな悪い習慣じゃないと思うけどアンダースコアは要らんね
mFooでいい。m_Fooにする意味が分からん
mFooでいい。m_Fooにする意味が分からん
965デフォルトの名無しさん (オッペケ Sr6f-Adon)
2021/05/14(金) 21:50:54.76ID:Hk5V+gvwr そっちの方が原始人度が高いとおもうがw
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… [BFU★]
- 高市早苗首相。財務省の経済対策草案を「しょぼすぎる」と一刀両断し自らテコ入れ [バイト歴50年★]
- 立憲・野田代表が主張 台湾有事答弁で「質問者批判は筋違い」「答弁がおかしい」「高市総理迎合のネット世論は危険」★4 [♪♪♪★]
- 日中関係悪化で「日本からもうすぐパンダがいなくなる」 中国SNSでトレンド1位に★2 [♪♪♪★]
- 【音楽】石川ひとみ「まちぶせ」はストーカーか 衆院委で質問 [膳摩漏★]
- 【🍝】「偽カルボナーラ」にイタリア激怒、パンチェッタの使用は「犯罪」と非難 ★3 [Ailuropoda melanoleuca★]
- 高市早苗が吉岡里帆、新垣結衣、長澤まさみに似てると話題に [996062793]
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」 [115996789]
- 【実況】白銀ノエルと博衣こよりのえちえちパワフルプロ野球
- 【速報】高市早苗「答弁撤回はしない」経済制裁へ★2 [931948549]
- 【んな専🏡】ルーナイトたち~1週間お疲れ様なのらぁ~(・o・🍬)🏰
- おさかなさんあつまれえ🐟˜˷
