C#, C♯, C#相談室 Part98 (518レス)
1-

188: (ワッチョイ dff4-tB0+) 2024/12/09(月)13:22 ID:wWCmXoxS0(1) AAS
科学 + 5ch

【AI】AIはわずか2時間の対話で人間の性格をコピーできる [すらいむ★]
2chスレ:scienceplus

コメントに面白いことが書かれている
189: 185 (ワッチョイ 5f62-oAsD) 2024/12/09(月)17:56 ID:apYLNmO+0(1) AAS
PaintDotNetをインストールした
190: (ワッチョイ 47da-InQL) 2024/12/11(水)06:17 ID:BgUz4+cQ0(1) AAS
varなんて使うな戦争ってもう終結したの?
191: (オッペケ Sr1b-2ZNr) 2024/12/11(水)07:27 ID:DZxIsQuWr(1) AAS
言語によりけりだから
192: (ワッチョイ 47d7-InQL) 2024/12/11(水)08:36 ID:tumrZkmz0(1) AAS
盲目的にvar使うなとは思うけど、一切使うなはないなぁ
193: (ワッチョイ df2b-2fXw) 2024/12/11(水)08:50 ID:AAqkzyDB0(1) AAS
まあマイクロソフトのサンプルにも使ってる例あるしな
194: (ラクッペペ MM8f-n9Eh) 2024/12/11(水)10:05 ID:BwkZDwjMM(1) AAS
jsのvarと違ってただの便利機能だしな
195: (ワッチョイ 476d-Ahcx) 2024/12/11(水)12:36 ID:uq+uLBFl0(1/2) AAS
varで参照型を扱うとnullableになるのはどうにかしてほしい
196: (ワッチョイ 87ae-pQ4B) 2024/12/11(水)13:56 ID:pPQiPOka0(1) AAS
推論型なんだし、必要に応じて使えばいいんじゃね?
objectならともかく
197: (ワッチョイ df6c-Fa9A) 2024/12/11(水)14:39 ID:1I783KxU0(1) AAS
varが絶対必要なのって匿名型使うときだけだから、必要に応じて使う、だとvarはほとんど用無しになっちゃう
戦争に参加するつもりはないが仮にvar使うんなら必要に応じてじゃなく基本varにしないと
198: (ワッチョイ 6756-2ZNr) 2024/12/11(水)14:54 ID:9MAiYNgK0(1) AAS
c#は基本varでいいよね
多分大体のc#er?はvarじゃないときにだけ理由を気にするんじゃないかな
199: (オイコラミネオ MMab-InQL) 2024/12/11(水)18:36 ID:SiVbJLlPM(1/2) AAS
初期に頭のいい人は一番先に varに飛び移った
その後みんな気が付いて移行した
今でも使わないのはご老人
200: (ワッチョイ 475a-NyP9) 2024/12/11(水)19:15 ID:Rq12mde/0(1) AAS
varばかりやわ
201: (ワッチョイ 7f2a-7Ydj) 2024/12/11(水)20:38 ID:pwnGkEKD0(1) AAS
VBのVariant最強
202: (オイコラミネオ MMab-InQL) 2024/12/11(水)20:41 ID:SiVbJLlPM(2/2) AAS
それはないかなw
203
(2): (ワッチョイ 476d-Ahcx) 2024/12/11(水)23:21 ID:uq+uLBFl0(2/2) AAS
インターフェース分離の原則が分からない
「必要のない振る舞いを実装しない」のは適切だと思うんだけど、ポリモーフィズムとの組み合わせが悪いように思う

interface IBird { string Name { get; } }
interface IFlyable { void Fly(); }

// ペンギンは飛べないので IFlyableを実装しない
class Pengin : IBird { ... }
class Eagle : IBird, IFlyable { ... }

のようにした場合に、プログラムが List<IBird> birds のような形でデータを持つと、「飛べる鳥がいる」という情報が型から消える

foreach (IBird bird in birds) {
 Console.write(bird.Name);
 if (bird is IFlyable flyable) {
  flyable.Fly();
 }
}

「飛べる鳥なら飛ばす」ようにしたい場合、インターフェースを分離する場合だと上記のように is でキャストするしか無さそう?
IBirdで扱っているのに「インスタンスは IFlyable である可能性がある」という情報に依存してるのに少し違和感があって、より綺麗な解決策があれば知りたい
204: (ワッチョイ e701-5/pq) 2024/12/12(木)00:16 ID:7oNgfo0K0(1) AAS
c#スレですよ
205: (ワッチョイ 47d7-InQL) 2024/12/12(木)08:54 ID:ZQ0BgCqv0(1/4) AAS
そこを別々のインターフェースとして分離するのが間違ってるだでは
飛べる飛べないも”鳥”の一要素でしょ
206
(1): (ワッチョイ df2b-2fXw) 2024/12/12(木)08:59 ID:cbjQHW3y0(1/3) AAS
プロパティで持てば解決
207: (ワッチョイ 476d-Ahcx) 2024/12/12(木)09:20 ID:m/Fq7DtI0(1/4) AAS
>>206
Nullableな IFrayable? をプロパティとして持たせて、飛ぶ鳥の場合はthisを返すようにするということ?
208: (ワッチョイ 47d7-InQL) 2024/12/12(木)09:43 ID:ZQ0BgCqv0(2/4) AAS
そこだけのインターフェース化に拘るなって言ってんだよ
209: (ワッチョイ 476d-Ahcx) 2024/12/12(木)10:34 ID:m/Fq7DtI0(2/4) AAS
鳥とペンギンだと近すぎて例えとして微妙だった
例えば「動物のリスト」のようなデータを持ち、動物には鳥のように飛べるクラス (Flyメソッドを持つ) と、トラやライオンのように走るクラス (Runメソッドを持つ) があるといった場合

動物の一覧を持つには List<IAnimal> のような型を使うと思うけど、これは合ってるよね?
その上で動物によって違うアクションを行わせたいとする

IAnimal側に CanFly のようなメソッドを追加していくと、例えばサルのように「道具を使う動物」が後から追加された場合、IAnimalにメソッド追加が必要になり、それはBirdなどの各クラスにも影響する
Birdクラスは「道具を使う」なんてことは知らないのに、インターフェースのために CanUseTool のようなメソッドを後から追加するのは違う気がする

そうするとやっぱインターフェース分離の形になりそうで、そうなると利用側で is でキャストするのが落としどころなのかと
210: (ワッチョイ 47d7-InQL) 2024/12/12(木)13:06 ID:ZQ0BgCqv0(3/4) AAS
鳥以外にも飛ぶ(正確には滑空だが滞空することに変わりはない)動物は居るし
鳥だって地面をRunするヤツは居る
鳥にも、猿程でなくてもその辺に落ちてる物を道具的に使うヤツも居る

お前の例題がそもそもめちゃくちゃなんだよ
211: (ワッチョイ 47d7-InQL) 2024/12/12(木)13:06 ID:ZQ0BgCqv0(4/4) AAS
あといい加減余所でやれ
C#直接関係ない
212: (ワッチョイ 4793-Ahcx) 2024/12/12(木)17:51 ID:pRQ+cocj0(1) AAS
ここの住人はC#を使っていてSOLID原則に悩まされたことなど無いのだろうか
213: (ガックシ 06eb-7Ydj) 2024/12/12(木)18:08 ID:A8Z2cdQL6(1) AAS
>>203
ある動物が飛べることと、鳥であることは独立なんだから、
「飛べる鳥がいる」という情報はなくても仕方なくない?
統計的な相関関係はあるかもしれないが、包含関係でないなら仕方ない。
飛べる他の動物を無視するのなら、IBirdを継承したインタフェースでIFlyableBirdを作ればいいのでは?
214
(1): (ワッチョイ 474b-Ahcx) 2024/12/12(木)18:40 ID:m/Fq7DtI0(3/4) AAS
ISP自体はC#でよく出てくる問題じゃないの?
これなんかまさにそう
外部リンク:dev.to

だけどこういった解説はISP単体の説明になっていて、泳ぐ、走るといった能力の異なるものを Animal として抽象化する方法を教えてくれない
綺麗な方法でなくても「C#ではこうすることが多い」のようなプラクティスがあれば知りたかったんだけど、そういうのは無さそうなんですかね
215: (ワッチョイ bf79-/9Tr) 2024/12/12(木)19:18 ID:j5Bpxje00(1/2) AAS
実装を伴わない抽象化の話ってなんの身にもならないからやめなさい
それとインターネットサービスプロバイダの話は他所でやってくれ
216: (ワッチョイ 7f10-InQL) 2024/12/12(木)19:18 ID:F/GYmEjD0(1/2) AAS
求めてそうなプラクティスは見た事ないなぁ
個人的には、飛ぶにしても走るにしても動物という存在の態様のひとつだから
動物IFのプロパティに含めるでいいんじゃないかと思うけどね
217
(1): (ワッチョイ 7f95-AGOF) 2024/12/12(木)19:36 ID:uARXvv9l0(1) AAS
var unko = new Unko()

より

Unko unko = new()

の方が良くね?
1-
あと 301 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.007s