[過去ログ] ふらっと C#,C♯,C#(初心者用) Part150 (941レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): デフォルトの名無しさん (ワッチョイ 2b02-+i0H) [sage] 2021/03/23(火) 12:58:24 ID:ACoFzk2L0(1/2) AAS
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
2chスレ:tech
■関連スレ
C#, C♯, C#相談室 Part94
2chスレ:tech
■コードを貼る場合は↓を使いましょう。
外部リンク:ideone.com
外部リンク:dotnetfiddle.net
■情報源
外部リンク:docs.microsoft.com
外部リンク:docs.microsoft.com
外部リンク:docs.microsoft.com
外部リンク:referencesource.microsoft.com
・Insider.NET > .NET TIPS - @IT
外部リンク[html]:www.atmarkit.co.jp
・DOBON.NET .NET Tips
外部リンク[html]:dobon.net
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
917(1): デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb) [sage] 2021/05/11(火) 11:18:15 ID:m6WVK0Xg0(2/2) AAS
>>895895(3): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 02:06:49 ID:aDB05LmB0(3/15) AAS
>>894
不変よ
少なくともプログラムが実行されてからは
だって状態を表してるんだから
変更が必要になるのは継承で分岐するソースコードの修正作業時だけ
こういう形でenumが使えないなら
今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えないということ
実際使わないほうがいいと思う
赤青ランプを継承して
赤青黃ランプを作ったときに
状態赤青がenumで作られてたらゴミ箱にブチ込むしか道はない
不変っていうのは、実行時に変わらないって意味じゃないぞ
修正/機能追加でも変わらないってことだ
結論としては自分で書いてる通り
>今後継承を行う可能性が少しでもあるならそのクラスではenumは一切使えない
だよ。Enum継承したいってことはつまり変更したいってことだから
Color.RedやColor.BlueはEnumじゃないだろ
まあSystem.Drawing.Colorは構造体で継承できなかった気がするけど
そんな感じで作っとけ
918: デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 12:02:27 ID:N41oKzlma(1) AAS
>>915話が通じない人だなw
問題はenumにあるんじゃない。
>>902にはどこにもenumなんか出てきてないでしょw
汎化するのに継承を使うのがおかしい。
継承は特化するのに使うんだってw
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 | 黄
}
920: デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 13:34:53 ID:aDB05LmB0(14/15) AAS
>>917
そんなの未来永劫保証できないじゃん
enum作った人本当にバカなんだね
使えないもん作ってろよって感じ
921(1): デフォルトの名無しさん (ワッチョイ bea7-wGCM) [sage] 2021/05/11(火) 13:38:39 ID:aDB05LmB0(15/15) AAS
>>919
基底に黒とグレーを追加
922: デフォルトの名無しさん (ワッチョイ a662-W8a5) [sage] 2021/05/11(火) 14:03:01 ID:9XfnnIxq0(2/4) AAS
>>921
別に俺が作ってる訳じゃないからそんなこと言われても知らんがな
enumでやりたくないならそれでいいと思うし好きにやりなよ
923(1): デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 14:27:53 ID:7X7kMfyca(1) AAS
>>919
enumの利点はコンパイル時に名前の集合を型として定義できる、
名前の集合が確定していて、だからインテリセンスが使えたり
集合に含まれないはずの名前が使われている間違いをコンパイル時に検出できることなので
それは代用にならんでしょ。
質問している人の問題はたぶん継承に固執してること。
部分集合を再利用して上位集合を定義したいって問題意識は分からんでもないけど、
emumなんてただの名前の集合なんだからそういう場合はコピペ継承するのが多分正解。
924: デフォルトの名無しさん (エアペラ SDd7-/hng) [sage] 2021/05/11(火) 14:31:08 ID:pmLjbtQdD(1) AAS
適材適所
925(1): デフォルトの名無しさん (ブーイモ MMd6-D3Lk) [sage] 2021/05/11(火) 14:40:19 ID:/TD/rkCHM(1) AAS
C#や諸々の言語はそもそも、継承の仕様が出来損ないなんだよね
Java 16みたいにSealed Classを定義できるなら、まだしもねぇ
どんなクラスでも継承できます、なんて言われてもね
全てのサブクラスの面倒を見るなんて、事実上不可能だろ
だからサブクラスを限定する仕組みが必要なのだが…
C#はまだまだ、遅れてるね
926: デフォルトの名無しさん (ワッチョイ a662-W8a5) [sage] 2021/05/11(火) 14:45:04 ID:9XfnnIxq0(3/4) AAS
>>923
ああ、そういう事ね
Nullとか空とかのEnumを用意しとくべきかみたいな話と似てるな
927(1): デフォルトの名無しさん (ワッチョイ 5b2d-gUNg) [sage] 2021/05/11(火) 15:00:11 ID:1Lpm83JY0(3/4) AAS
>>925
Javaのことは知らんけど
C#のsealed classでは駄目なの
928: デフォルトの名無しさん (ワッチョイ a662-W8a5) [sage] 2021/05/11(火) 15:07:01 ID:9XfnnIxq0(4/4) AAS
自分ならカスタム属性と拡張メソッド作って、集合.Hoge.Colors()で一覧を取れるようにするかな
まあケースバイケース
enum 集合{
[AddColor(Color.赤, Color.青)]
Hoge,
[InheriteColor(集合.Hoge)]
[AddColor(Color.黄)]
Hoge2
}
929(1): デフォルトの名無しさん (ワッチョイ be2c-5KFm) [sage] 2021/05/11(火) 15:14:49 ID:Fjpe2RX80(1) AAS
>>927
そっちじゃなくて継承できる型を限定する機能だね
ShapeインターフェイスをRectangleクラスとCircleクラスのみ実装可能にする
他の奴がTriangleクラスを作ってShapeを実装するのは認めない
930: デフォルトの名無しさん (ワッチョイ 5b2d-gUNg) [sage] 2021/05/11(火) 15:43:37 ID:1Lpm83JY0(4/4) AAS
>>929
なるほどC#に限定する機能はないね
コンストラクタのアクセス権をinternalにしてアセンブリを分ければ実用上はそんなに困らなそうだけど
931: デフォルトの名無しさん (ワッチョイ 2a01-Yqly) [sage] 2021/05/11(火) 16:04:08 ID:gVDvfxdk0(1) AAS
>>919
>override List<enum> Lamps => base.Lampsと黄を返す
これはEnumでやってるんじゃなくListでやってるだけのような・・
取りうる状態の範囲をEnumで表現してないしコンパイル時のチェックも無理だよね
>override Color Lamp => base.Lamp | Color.黄
こっちも型としてはColorになるので既存のColor定義が赤と青だけなら
全く別のEnumを新しく定義することか、既存の定義自体を変更して黄を足すかになるので
既存のコードを維持したまま新しいコードを追加することはできないよね?
Enumを使うべきユースケースじゃないからできなくて当たり前なんだけどさ
932(1): デフォルトの名無しさん (ワッチョイ 2fb0-DjaX) [sage] 2021/05/11(火) 16:18:03 ID:qWgZ839v0(2/2) AAS
>>896896(2): デフォルトの名無しさん (アウアウウー Sa1f-dxvU) [sage] 2021/05/11(火) 02:09:51 ID:lKBWqYLpa(3/4) AAS
挿入文字列はコンパイル時に解析される(実行時に解析されるわけじゃない)と思うので(知らんけど)
stringの変数に挿入文字列自体を入れるとかできないと思うけど、そもそも何でそんなことがしたいの?
多言語化のために文字列リソースにしておきたいという動機なら理解できるけど
変数に入れたい動機が思いつかない
文字列の雛形をDBに持たせて、パラメータ部分を置換して出力するみたいなことやってたのよ
『置換して出力』部分を$使う挿入文字列で置き換えられたらいいなって夢想した
pythonの似たような機能でキーワード引数による指定が出来るから、似たようなこと出来ないかなって
> print('{first} and {second}'.format(first=a, second=b))
string.format使えばいいだけなんだけどね
933: デフォルトの名無しさん (テテンテンテン MMe6-I8iA) [sage] 2021/05/11(火) 20:06:26 ID:7D4cBYXWM(1) AAS
>>932のやりたいことが挿入文字列を共通化したいってことならおとなしくメソッド化して
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 ID:HCx7UYF5F(1) AAS
プラごみを減らすためにレジ袋有料化するって話と似てるな
そもそもピントがずれてるし前提も可笑しい
935: デフォルトの名無しさん (ワッチョイ be2c-5KFm) [sage] 2021/05/12(水) 14:46:53 ID:kcMRoKH40(1) AAS
リソースで他言語対応すると考えると欲しい気持ちは分かる
"Hello, I'm {givenName} {surname}."
"こんにちは、私は {surname}{givenName} です。"
みたいに書きたい
936: デフォルトの名無しさん (ブーイモ MM97-tepi) [sage] 2021/05/12(水) 14:52:52 ID:KOpdkLhcM(1) AAS
All your base are belong to us
937: デフォルトの名無しさん (オッペケ Sr33-7fsT) [sage] 2021/05/12(水) 18:25:12 ID:l5b/FJ1ur(1) AAS
evalをやりたいと言うことだな
テスト不可になるからいらんけど
938: デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H) [sage] 2021/05/12(水) 22:11:27 ID:rLfxFtSp0(1/2) AAS
c#ってvisual studioインストールしたときに入ってるコンパイラじゃなくて
.Net 5に移行するのが良いでしょうか?
Microsoftも.Net 5移行を推進していきますかね?
939: デフォルトの名無しさん (ラクッペペ MMe6-jV+5) [sage] 2021/05/12(水) 22:18:36 ID:ApiPrDZMM(1) AAS
同じもの
940: デフォルトの名無しさん (ワッチョイ 9f5f-Y/5H) [sage] 2021/05/12(水) 23:16:35 ID:rLfxFtSp0(2/2) AAS
そうだったんですね!
941: デフォルトの名無しさん (ワッチョイ 0bda-jV+5) [sage] 2021/05/13(木) 01:52:12 ID:Q5JRmth30(1) AAS
コンパイラは同じ
実行環境やフレームワークは違う
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.428s*