!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
■Visual Studio 2022 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C#, C♯, C#相談室 Part98
1デフォルトの名無しさん (ワッチョイ 7f6a-B4f6)
2024/06/29(土) 19:18:41.95ID:NohAfdfx0200デフォルトの名無しさん (ワッチョイ 475a-NyP9)
2024/12/11(水) 19:15:48.68ID:Rq12mde/0 varばかりやわ
201デフォルトの名無しさん (ワッチョイ 7f2a-7Ydj)
2024/12/11(水) 20:38:24.59ID:pwnGkEKD0 VBのVariant最強
202デフォルトの名無しさん (オイコラミネオ MMab-InQL)
2024/12/11(水) 20:41:39.44ID:SiVbJLlPM それはないかなw
203デフォルトの名無しさん (ワッチョイ 476d-Ahcx)
2024/12/11(水) 23:21:13.31ID:uq+uLBFl0 インターフェース分離の原則が分からない
「必要のない振る舞いを実装しない」のは適切だと思うんだけど、ポリモーフィズムとの組み合わせが悪いように思う
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 である可能性がある」という情報に依存してるのに少し違和感があって、より綺麗な解決策があれば知りたい
「必要のない振る舞いを実装しない」のは適切だと思うんだけど、ポリモーフィズムとの組み合わせが悪いように思う
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:45.29ID:7oNgfo0K0 c#スレですよ
205デフォルトの名無しさん (ワッチョイ 47d7-InQL)
2024/12/12(木) 08:54:59.88ID:ZQ0BgCqv0 そこを別々のインターフェースとして分離するのが間違ってるだでは
飛べる飛べないも”鳥”の一要素でしょ
飛べる飛べないも”鳥”の一要素でしょ
206デフォルトの名無しさん (ワッチョイ df2b-2fXw)
2024/12/12(木) 08:59:12.98ID:cbjQHW3y0 プロパティで持てば解決
207デフォルトの名無しさん (ワッチョイ 476d-Ahcx)
2024/12/12(木) 09:20:56.04ID:m/Fq7DtI0 >>206
Nullableな IFrayable? をプロパティとして持たせて、飛ぶ鳥の場合はthisを返すようにするということ?
Nullableな IFrayable? をプロパティとして持たせて、飛ぶ鳥の場合はthisを返すようにするということ?
208デフォルトの名無しさん (ワッチョイ 47d7-InQL)
2024/12/12(木) 09:43:51.10ID:ZQ0BgCqv0 そこだけのインターフェース化に拘るなって言ってんだよ
209デフォルトの名無しさん (ワッチョイ 476d-Ahcx)
2024/12/12(木) 10:34:43.14ID:m/Fq7DtI0 鳥とペンギンだと近すぎて例えとして微妙だった
例えば「動物のリスト」のようなデータを持ち、動物には鳥のように飛べるクラス (Flyメソッドを持つ) と、トラやライオンのように走るクラス (Runメソッドを持つ) があるといった場合
動物の一覧を持つには List<IAnimal> のような型を使うと思うけど、これは合ってるよね?
その上で動物によって違うアクションを行わせたいとする
IAnimal側に CanFly のようなメソッドを追加していくと、例えばサルのように「道具を使う動物」が後から追加された場合、IAnimalにメソッド追加が必要になり、それはBirdなどの各クラスにも影響する
Birdクラスは「道具を使う」なんてことは知らないのに、インターフェースのために CanUseTool のようなメソッドを後から追加するのは違う気がする
そうするとやっぱインターフェース分離の形になりそうで、そうなると利用側で is でキャストするのが落としどころなのかと
例えば「動物のリスト」のようなデータを持ち、動物には鳥のように飛べるクラス (Flyメソッドを持つ) と、トラやライオンのように走るクラス (Runメソッドを持つ) があるといった場合
動物の一覧を持つには List<IAnimal> のような型を使うと思うけど、これは合ってるよね?
その上で動物によって違うアクションを行わせたいとする
IAnimal側に CanFly のようなメソッドを追加していくと、例えばサルのように「道具を使う動物」が後から追加された場合、IAnimalにメソッド追加が必要になり、それはBirdなどの各クラスにも影響する
Birdクラスは「道具を使う」なんてことは知らないのに、インターフェースのために CanUseTool のようなメソッドを後から追加するのは違う気がする
そうするとやっぱインターフェース分離の形になりそうで、そうなると利用側で is でキャストするのが落としどころなのかと
210デフォルトの名無しさん (ワッチョイ 47d7-InQL)
2024/12/12(木) 13:06:06.44ID:ZQ0BgCqv0 鳥以外にも飛ぶ(正確には滑空だが滞空することに変わりはない)動物は居るし
鳥だって地面をRunするヤツは居る
鳥にも、猿程でなくてもその辺に落ちてる物を道具的に使うヤツも居る
お前の例題がそもそもめちゃくちゃなんだよ
鳥だって地面をRunするヤツは居る
鳥にも、猿程でなくてもその辺に落ちてる物を道具的に使うヤツも居る
お前の例題がそもそもめちゃくちゃなんだよ
211デフォルトの名無しさん (ワッチョイ 47d7-InQL)
2024/12/12(木) 13:06:59.82ID:ZQ0BgCqv0 あといい加減余所でやれ
C#直接関係ない
C#直接関係ない
212デフォルトの名無しさん (ワッチョイ 4793-Ahcx)
2024/12/12(木) 17:51:32.06ID:pRQ+cocj0 ここの住人はC#を使っていてSOLID原則に悩まされたことなど無いのだろうか
213デフォルトの名無しさん (ガックシ 06eb-7Ydj)
2024/12/12(木) 18:08:37.64ID:A8Z2cdQL6 >>203
ある動物が飛べることと、鳥であることは独立なんだから、
「飛べる鳥がいる」という情報はなくても仕方なくない?
統計的な相関関係はあるかもしれないが、包含関係でないなら仕方ない。
飛べる他の動物を無視するのなら、IBirdを継承したインタフェースでIFlyableBirdを作ればいいのでは?
ある動物が飛べることと、鳥であることは独立なんだから、
「飛べる鳥がいる」という情報はなくても仕方なくない?
統計的な相関関係はあるかもしれないが、包含関係でないなら仕方ない。
飛べる他の動物を無視するのなら、IBirdを継承したインタフェースでIFlyableBirdを作ればいいのでは?
214デフォルトの名無しさん (ワッチョイ 474b-Ahcx)
2024/12/12(木) 18:40:52.28ID:m/Fq7DtI0 ISP自体はC#でよく出てくる問題じゃないの?
これなんかまさにそう
https://dev.to/fabriziobagala/interface-segregation-principle-452m
だけどこういった解説はISP単体の説明になっていて、泳ぐ、走るといった能力の異なるものを Animal として抽象化する方法を教えてくれない
綺麗な方法でなくても「C#ではこうすることが多い」のようなプラクティスがあれば知りたかったんだけど、そういうのは無さそうなんですかね
これなんかまさにそう
https://dev.to/fabriziobagala/interface-segregation-principle-452m
だけどこういった解説はISP単体の説明になっていて、泳ぐ、走るといった能力の異なるものを Animal として抽象化する方法を教えてくれない
綺麗な方法でなくても「C#ではこうすることが多い」のようなプラクティスがあれば知りたかったんだけど、そういうのは無さそうなんですかね
215デフォルトの名無しさん (ワッチョイ bf79-/9Tr)
2024/12/12(木) 19:18:32.74ID:j5Bpxje00 実装を伴わない抽象化の話ってなんの身にもならないからやめなさい
それとインターネットサービスプロバイダの話は他所でやってくれ
それとインターネットサービスプロバイダの話は他所でやってくれ
216デフォルトの名無しさん (ワッチョイ 7f10-InQL)
2024/12/12(木) 19:18:50.89ID:F/GYmEjD0 求めてそうなプラクティスは見た事ないなぁ
個人的には、飛ぶにしても走るにしても動物という存在の態様のひとつだから
動物IFのプロパティに含めるでいいんじゃないかと思うけどね
個人的には、飛ぶにしても走るにしても動物という存在の態様のひとつだから
動物IFのプロパティに含めるでいいんじゃないかと思うけどね
217デフォルトの名無しさん (ワッチョイ 7f95-AGOF)
2024/12/12(木) 19:36:28.62ID:uARXvv9l0 var unko = new Unko()
より
Unko unko = new()
の方が良くね?
より
Unko unko = new()
の方が良くね?
218デフォルトの名無しさん (ワッチョイ bf79-/9Tr)
2024/12/12(木) 19:46:48.91ID:j5Bpxje00 もっと地球規模の視野で考えろよ
うんこも地球の一部だろ?つまりうんこは地球とも言える
わかるか?
うんこも地球の一部だろ?つまりうんこは地球とも言える
わかるか?
219デフォルトの名無しさん (ワッチョイ 7f10-InQL)
2024/12/12(木) 19:55:04.36ID:F/GYmEjD0 >>217
まぁ、後者ができるようになったの後になってからだから
まぁ、後者ができるようになったの後になってからだから
220デフォルトの名無しさん (ワッチョイ bf01-aPXN)
2024/12/12(木) 22:38:48.07ID:VQmaeBIU0 >>214
それISP単体の説明にもなってない
class Penguin : IAnimalにNotImplementedExceptionでFly()を実装すれば即ISP違反だというのは間違い
まずは原典にあたってISPを理解してきたほうがいい
謳われてる原則をどう活用するかはその後
それISP単体の説明にもなってない
class Penguin : IAnimalにNotImplementedExceptionでFly()を実装すれば即ISP違反だというのは間違い
まずは原典にあたってISPを理解してきたほうがいい
謳われてる原則をどう活用するかはその後
221デフォルトの名無しさん (ワッチョイ df2b-2fXw)
2024/12/12(木) 22:49:28.08ID:cbjQHW3y0 そもそも
そんな鳥のプログラムなんか一般的じゃねーし
そんな鳥のプログラムなんか一般的じゃねーし
222デフォルトの名無しさん (ワッチョイ 474b-Ahcx)
2024/12/12(木) 22:59:54.30ID:m/Fq7DtI0 >>220
「クライアントが『泳ぐ、飛ぶ、もしくは走る動物』として使うことを想定するのなら、そのインターフェースであるIAnimalにその情報を含めるのは適切」ということですかね
class Penguin としては Fly や Run などのメソッドの実装はノイズに思えるけど、IAnimalとして使われるなら、その契約に従えという感じかな
(それだと後から「道具を使う」がIAnimalに追加された際に Penguine もメソッド追加が必要で、そこがモヤモヤしてる)
こういう場合にアダプタ (ラッパー?) を使うのって適切?
純粋に Penguine としての機能を提供するクラスと、それを IAnimal として使うためのアダプタみたいなの
それだと更に複雑さを増すだけ?
OOP難しい……
「クライアントが『泳ぐ、飛ぶ、もしくは走る動物』として使うことを想定するのなら、そのインターフェースであるIAnimalにその情報を含めるのは適切」ということですかね
class Penguin としては Fly や Run などのメソッドの実装はノイズに思えるけど、IAnimalとして使われるなら、その契約に従えという感じかな
(それだと後から「道具を使う」がIAnimalに追加された際に Penguine もメソッド追加が必要で、そこがモヤモヤしてる)
こういう場合にアダプタ (ラッパー?) を使うのって適切?
純粋に Penguine としての機能を提供するクラスと、それを IAnimal として使うためのアダプタみたいなの
それだと更に複雑さを増すだけ?
OOP難しい……
223デフォルトの名無しさん (ワッチョイ df2b-2fXw)
2024/12/12(木) 23:02:07.06ID:cbjQHW3y0 適切とか
とりあえず作ればよくね?
適切かどうかなんてエグゼにしたら関係なくね?
それとも論点だけ考えて実際のプログラム作らないの?
それ何したいの
とりあえず作ればよくね?
適切かどうかなんてエグゼにしたら関係なくね?
それとも論点だけ考えて実際のプログラム作らないの?
それ何したいの
224デフォルトの名無しさん (ワッチョイ df6a-B4jd)
2024/12/12(木) 23:31:52.39ID:RbZTiiBk0 例が不適切だから混乱してるだけにしか見えないなぁ
225デフォルトの名無しさん (ワッチョイ ff70-Ahcx)
2024/12/12(木) 23:50:28.74ID:cAk5An+50 SOLIDが現実のコードで使われなかったり、「オブジェクト指向は問題を複雑にするだけ」みたいなことを言われる原因
226デフォルトの名無しさん (ワッチョイ 6714-oAsD)
2024/12/13(金) 01:16:53.76ID:sFncMVeV0 >>203
インターフェース分離の原則は「クラスが必要としないメソッドを実装しない」ってだけ
ペンギンのような飛べない鳥が IFlyable を実装しないのは正しい
あとは「飛べる鳥」をインターフェースで分かるようにしてやればいい
isを使う羽目になったのは飛べるかどうかわからない IBirdをListにしてるから
---
interface IBird { string Name { get; } }
interface IFlyable : IBird { void Fly(); }
// ペンギンは飛べない
class Penguin : IBird {
public string Name => "Penguin";
}
// ワシは飛べる
class Eagle : IFlyable {
public string Name => "Eagle";
public void Fly() => Console.WriteLine($"{Name} is flying!");
}
// 飛べる鳥だけを扱うリストを作る
List<IFlyable> flyableBirds = new List<IFlyable> { new Eagle() };
foreach (var bird in flyableBirds) {
bird.Fly(); // 明示的に飛べる鳥しか扱わない
}
インターフェース分離の原則は「クラスが必要としないメソッドを実装しない」ってだけ
ペンギンのような飛べない鳥が IFlyable を実装しないのは正しい
あとは「飛べる鳥」をインターフェースで分かるようにしてやればいい
isを使う羽目になったのは飛べるかどうかわからない IBirdをListにしてるから
---
interface IBird { string Name { get; } }
interface IFlyable : IBird { void Fly(); }
// ペンギンは飛べない
class Penguin : IBird {
public string Name => "Penguin";
}
// ワシは飛べる
class Eagle : IFlyable {
public string Name => "Eagle";
public void Fly() => Console.WriteLine($"{Name} is flying!");
}
// 飛べる鳥だけを扱うリストを作る
List<IFlyable> flyableBirds = new List<IFlyable> { new Eagle() };
foreach (var bird in flyableBirds) {
bird.Fly(); // 明示的に飛べる鳥しか扱わない
}
227デフォルトの名無しさん (ワッチョイ e701-5/pq)
2024/12/13(金) 01:54:21.75ID:aJRVKPMX0 こいつら病気なんか
228デフォルトの名無しさん (ワッチョイ df2b-2fXw)
2024/12/13(金) 01:55:37.37ID:0Vp4NoOf0 だね
229デフォルトの名無しさん (ワッチョイ 7f10-InQL)
2024/12/13(金) 06:18:42.75ID:ooVm180t0 SOLIDにしても所詮理想論であって現場に即してるわけじゃないしなぁ
230デフォルトの名無しさん (ブーイモ MMff-RQnm)
2024/12/13(金) 07:39:08.04ID:WeveN3pQM せやな
231デフォルトの名無しさん (ワッチョイ 27a0-tB0+)
2024/12/13(金) 17:30:15.58ID:LAtQrsJV0 サイコパスの脳の違いを発見。一般の人に比べ線条体が大きいことが判明
karapaia.com/archives/52313287.html
karapaia.com/archives/52313287.html
232デフォルトの名無しさん (スププ Sdff-AHQg)
2024/12/13(金) 20:28:57.37ID:DLDRNjlrd 関数型がいいんだね!
233デフォルトの名無しさん (ワッチョイ 7f6e-VwYf)
2024/12/14(土) 09:23:37.03ID:9hmM95L70 後から増えた「道具を使う」には何かいい感じにデフォルト実装つけとけば既存のクラスには影響しないんじゃない
234デフォルトの名無しさん (ワッチョイ bfe7-AHQg)
2024/12/14(土) 12:26:32.43ID:vNNE6Utb0 それを派生というのでは?
235デフォルトの名無しさん (ワッチョイ 4783-Ahcx)
2024/12/14(土) 12:52:03.62ID:/3oGIJ400 C# 8 からはインターフェースのデフォルト実装が使える
236デフォルトの名無しさん (ワッチョイ bf79-/9Tr)
2024/12/14(土) 14:27:07.29ID:TQJHLK8K0 Win10や11のOS付属のpowershell5.1でインラインで書けるC#ってバージョンちょっと古くね
できれば新しいRoslynのC#をpowershellから使いたいのだが
なんか昔の記事しか見つからん
できれば新しいRoslynのC#をpowershellから使いたいのだが
なんか昔の記事しか見つからん
237デフォルトの名無しさん (ワッチョイ bf19-xj7L)
2024/12/14(土) 15:05:36.28ID:uE892PPx0 どうせ別に入れる必要があるならPowerShell 7入れれば良くね
238デフォルトの名無しさん (ワッチョイ a78e-4Hmg)
2024/12/14(土) 16:09:38.02ID:SXm2TFHi0 >>236
起動時に出て来るメッセージすら読めないのか
起動時に出て来るメッセージすら読めないのか
239デフォルトの名無しさん (ワッチョイ 2679-qWVo)
2024/12/15(日) 03:52:31.32ID:c6iml+qS0 >>238
お前はこれでも読んどけ
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.4
Roslyn単体で使うだけならビルドツール拾ってくるだけだが
Powershell上げるとなると仕様も大幅に変わってたりして無理だし俺が出した要件の解にもなってない
お前はこれでも読んどけ
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.4
Roslyn単体で使うだけならビルドツール拾ってくるだけだが
Powershell上げるとなると仕様も大幅に変わってたりして無理だし俺が出した要件の解にもなってない
240デフォルトの名無しさん (ワッチョイ db8e-Dyog)
2024/12/15(日) 04:43:36.26ID:OuaeEhke0 >>239
馬鹿が必死に調べただけの浅い知識で言い訳してる
馬鹿が必死に調べただけの浅い知識で言い訳してる
241デフォルトの名無しさん (オイコラミネオ MM8f-Xxs2)
2024/12/15(日) 09:22:53.93ID:6s9C3wLNM 今のところ互換性の為に残してあるんだろう
それを変えちゃうと問題が起こる可能性があるしMS側のメンテがめんどうなので
変えたい人は7とセットで入れろということなんだろう
それを変えちゃうと問題が起こる可能性があるしMS側のメンテがめんどうなので
変えたい人は7とセットで入れろということなんだろう
242デフォルトの名無しさん (ワッチョイ fa12-/DxF)
2024/12/15(日) 13:32:12.27ID:1H80RXIX0243デフォルトの名無しさん (ワッチョイ fb50-Nme3)
2024/12/16(月) 00:02:44.03ID:jraeIOUM0 PowerShellは完全に袋小路だからもう諦めた方がいい
6以降は事実上Azure専用
6以降は事実上Azure専用
244デフォルトの名無しさん (ワッチョイ db8e-Dyog)
2024/12/16(月) 03:32:32.19ID:B9vFRMjT0245デフォルトの名無しさん (ワッチョイ 7e90-3k2I)
2024/12/16(月) 04:36:14.08ID:M2IkaScH0 なんで作っては捨ててくスタイルなんかなMicrosoftは
246デフォルトの名無しさん (ワッチョイ 4a2b-bCeE)
2024/12/16(月) 06:57:26.47ID:xj9X4IbW0 作ってないやろ
買収してるだけ
買収してるだけ
247デフォルトの名無しさん (ワッチョイ be10-Xxs2)
2024/12/16(月) 08:17:45.85ID:d6I1DTY60 PSはMSが作ってるが
248デフォルトの名無しさん (ワッチョイ 0bff-iztn)
2024/12/16(月) 09:42:40.38ID:WomMb93i0 Windowsに標準搭載されてる.NET Frameworkと今の.NETの時点で互換性ないのに
なんで.NETアプリであるPowerShellが叩かれるのか
なんで.NETアプリであるPowerShellが叩かれるのか
249デフォルトの名無しさん (ワッチョイ 0fd7-Xxs2)
2024/12/16(月) 12:31:10.08ID:zYOmJNRT0 標準搭載されてるPowerShellは.NETアプリじゃなくて.NET Frameworkアプリだからね
250デフォルトの名無しさん (ワッチョイ 2344-/DxF)
2024/12/16(月) 13:18:44.44ID:ZxGHnTET0251デフォルトの名無しさん (スププ Sd8a-omYb)
2024/12/16(月) 13:27:42.05ID:HTBCdLEid frameworkってなんでまだ存在するの?
252デフォルトの名無しさん (ワッチョイ be10-Xxs2)
2024/12/16(月) 15:54:22.92ID:d6I1DTY60 .NETがFrameworkと互換性無くて捨てられないから
253デフォルトの名無しさん (スププ Sd8a-omYb)
2024/12/16(月) 19:05:15.35ID:HTBCdLEid 互換性ないってことは、.NETとframeworkの2つのアプリを動かしたら、GCもそれぞれで動き始めるの?
254デフォルトの名無しさん (ブーイモ MM8a-1w4P)
2024/12/16(月) 21:44:01.92ID:dTKITl7UM >>253
GCはアプリ(プロセス)毎じゃないの
GCはアプリ(プロセス)毎じゃないの
255デフォルトの名無しさん (ワッチョイ 2ef8-Nme3)
2024/12/19(木) 20:41:55.41ID:KU+lpcLj0 PowerShellはWindowsにシステムワイドにインストールされた .NET Framework が存在するという前提で成立していたのに、
.NETでは.NET自体をアプリにバンドルするか、必要に応じて特定のバージョンを追加で入れるかになって完全に破綻しちゃったんだよね
一般的な.NETアプリならバンドルは可搬性が向上するから好ましいことだけど、
PowerShellの場合はシステムワイドにインストールされたいろんなモジュールと連携しなきゃいけないから.NETバンドルはありえない
完全に詰んでる
.NETでは.NET自体をアプリにバンドルするか、必要に応じて特定のバージョンを追加で入れるかになって完全に破綻しちゃったんだよね
一般的な.NETアプリならバンドルは可搬性が向上するから好ましいことだけど、
PowerShellの場合はシステムワイドにインストールされたいろんなモジュールと連携しなきゃいけないから.NETバンドルはありえない
完全に詰んでる
256デフォルトの名無しさん (ワッチョイ 0fd7-Xxs2)
2024/12/20(金) 08:54:32.70ID:6dsqio680 だからPowerShell Coreは標準装備じゃなくて追加装備
257デフォルトの名無しさん (ワッチョイ 2ef8-Nme3)
2024/12/20(金) 10:14:37.03ID:PANCPXf30 Windowsにそもそも入ってないなら追加インストールでいいんだけどね。問題は5が入っていること。
それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、
そもそもPS書いて飯食ってるタイプのエンジニアでは最新に拘る人はそもそも少ないだろうね
それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、
そもそもPS書いて飯食ってるタイプのエンジニアでは最新に拘る人はそもそも少ないだろうね
258デフォルトの名無しさん (ワッチョイ 4a2b-bCeE)
2024/12/20(金) 13:01:10.12ID:9RxE8mFw0 はいそろそろC#の話題でよろ
259デフォルトの名無しさん (ワッチョイ eb78-RqoG)
2024/12/20(金) 15:29:33.49ID:raronLtC0 JAIST、「並行量子通信プロトコル」の完全な自動形式検証を実現
http://news.mynavi.jp/techplus/article/20241220-3090485/
http://news.mynavi.jp/techplus/article/20241220-3090485/
260デフォルトの名無しさん (ワッチョイ 3365-/DxF)
2024/12/20(金) 17:50:29.82ID:0SGDMmeR0 >>258
なんかある?
なんかある?
261デフォルトの名無しさん (ワッチョイ 6a79-qWVo)
2024/12/20(金) 20:02:54.65ID:7538eGNC0 またペンギンやら飛べない鳥だとかの話がしたいのかい?
それともPowshellの付属物の話がしたいのかい?
どっちなんだい?
それともPowshellの付属物の話がしたいのかい?
どっちなんだい?
262デフォルトの名無しさん (アウアウエー Sae2-N2kD)
2024/12/21(土) 10:56:38.14ID:bIHzWCsda >>257
>それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
>開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、
ほんそれ
5が全部入りにしておくのが正解だっただろうな
>それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
>開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、
ほんそれ
5が全部入りにしておくのが正解だっただろうな
263デフォルトの名無しさん (オイコラミネオ MM8f-Xxs2)
2024/12/21(土) 11:18:40.67ID:gj7hxYFQM PS for sysetmみたいなのを最小セットで入れておけば良かった
264デフォルトの名無しさん (ワッチョイ be10-Xxs2)
2024/12/21(土) 11:42:21.51ID:4NNdAFL10 終わらないPS談義
265デフォルトの名無しさん (ワッチョイ 8f5d-/DxF)
2024/12/21(土) 17:53:08.76ID:BdmznDtW0266デフォルトの名無しさん (ワッチョイ be10-Xxs2)
2024/12/21(土) 18:15:03.35ID:4NNdAFL10 いや知らんがw
俺がC#の話題にしろ言うたわけじゃないしw
俺がC#の話題にしろ言うたわけじゃないしw
267デフォルトの名無しさん (ワッチョイ 177d-N2O4)
2024/12/21(土) 21:57:55.88ID:i5j/m89y0 今関わってるプロジェクトがスペース2つでインデントしててちょっと面食らってしまったんだけどこれ珍しくないもの?
今まで携わってきた中で一件も遭遇したことなかった
今まで携わってきた中で一件も遭遇したことなかった
268デフォルトの名無しさん (ワッチョイ 6a6a-Pm71)
2024/12/21(土) 22:11:41.26ID:lUhayCnC0 過去に深いネストを大量生産する人がエラくなっちゃって、そういうルールになってしまったんじゃないかと妄想しちゃうなw
269デフォルトの名無しさん (ワッチョイ 8f5d-/DxF)
2024/12/21(土) 23:25:41.77ID:BdmznDtW0 今時スペース2個は珍しいな、C#とかではあんまりない気がする
昔々はどの言語でもタブを使っていいかとか、スペースで代用するなら2個か4個かで論争があったらしい
JSは2個が主流だった気がするけど今はどうだろ
昔々はどの言語でもタブを使っていいかとか、スペースで代用するなら2個か4個かで論争があったらしい
JSは2個が主流だった気がするけど今はどうだろ
270デフォルトの名無しさん (ワッチョイ a301-28Ti)
2024/12/21(土) 23:39:03.76ID:L6mtJxlH0 jsonは2だったり4だったりまちまちだけどね
271デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
2024/12/22(日) 00:09:01.63ID:tw4BvM7X0 タブのが合理的
Goみたいな標準フォーマッタがあるのが理想だけどC#はそう言う文化はないね
Goみたいな標準フォーマッタがあるのが理想だけどC#はそう言う文化はないね
272デフォルトの名無しさん (ワッチョイ df79-0Q8V)
2024/12/22(日) 02:26:26.71ID:/fc7feyD0 俺はスペース2個のが視線移動減って楽だと感じてるからかなり昔から2個派だよ
>>268みたいな日本人特有の右倣えのお仕着せルールに甘んず昔から超効率化してるやつらは世の中に沢山いるんだよ
勉強になったな
>>268みたいな日本人特有の右倣えのお仕着せルールに甘んず昔から超効率化してるやつらは世の中に沢山いるんだよ
勉強になったな
273デフォルトの名無しさん (ワッチョイ 2b28-MhhP)
2024/12/22(日) 03:54:49.07ID:f4R4W69d0 TABに統一してるけど
表示上は半角スペース2から4個で用途で変えてる
表示上は半角スペース2から4個で用途で変えてる
274デフォルトの名無しさん (スププ Sd03-+INx)
2024/12/22(日) 05:02:43.67ID:SvMpALOcd {}は
if(){
}
の方が好き
普通は
if()
{
}
これ?
if(){
}
の方が好き
普通は
if()
{
}
これ?
275デフォルトの名無しさん (ワッチョイ 832b-8NiF)
2024/12/22(日) 05:44:22.67ID:96LlHbpn0 逆、最初の頃は上が大多数
ブログやら初心者講座やらで下の書き方が主流担ってきてる感じ
ブログやら初心者講座やらで下の書き方が主流担ってきてる感じ
276デフォルトの名無しさん (ワッチョイ b310-3P54)
2024/12/22(日) 06:21:31.74ID:I7bhR46i0 スペース2個インデントって言うと、XMLやHTMLを思い浮かべるな
277デフォルトの名無しさん (ワッチョイ 957c-Th9R)
2024/12/22(日) 07:48:19.66ID:dFQQq0VB0278デフォルトの名無しさん (ワッチョイ 957c-Th9R)
2024/12/22(日) 07:50:46.11ID:dFQQq0VB0279デフォルトの名無しさん (ワッチョイ 957c-Th9R)
2024/12/22(日) 07:53:26.28ID:dFQQq0VB0280デフォルトの名無しさん (ワッチョイ 832b-8NiF)
2024/12/22(日) 08:13:40.94ID:96LlHbpn0281デフォルトの名無しさん (ワッチョイ 832b-8NiF)
2024/12/22(日) 08:20:56.74ID:96LlHbpn0 当時、というか関数書くときって
hoge(){
…}
て書くのが一般的やったん
んでDelphiが出てきたらこの{}をBegin…Endで囲むから
hoge()
Begin
…
End
ここらへんはVBやVBAとかにも反映されて
その後C#で出した際にって感じかな
hoge(){
…}
て書くのが一般的やったん
んでDelphiが出てきたらこの{}をBegin…Endで囲むから
hoge()
Begin
…
End
ここらへんはVBやVBAとかにも反映されて
その後C#で出した際にって感じかな
282デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
2024/12/22(日) 09:15:42.08ID:tw4BvM7X0 >>279
タブをインデントで使ってスペースをアライメントで使えば理論上ズレないよ
Goのフォーマッタはこれに従ってるからタブ幅は任意に設定できる
prettierみたいな途中で強制的に折り返すフォーマッタとは相性が悪いけど
タブをインデントで使ってスペースをアライメントで使えば理論上ズレないよ
Goのフォーマッタはこれに従ってるからタブ幅は任意に設定できる
prettierみたいな途中で強制的に折り返すフォーマッタとは相性が悪いけど
283デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
2024/12/22(日) 09:22:40.24ID:tw4BvM7X0 Indent with tabs, align with spaces
https://dmitryfrank.com/articles/indent_with_tabs_align_with_spaces
これね
これが理想だけどエンジニアのレベルが高くないとこのルールを守るのは難しいからスペースにしてるのが大半
ただしGoは強制フォーマッタでこれを解決してる
個人プロジェクトなら最初から好きなタブ幅にすればいいからタブにするメリットもあまりないし
気分でタブ幅変えれるのは結構メリットあるけどね
https://dmitryfrank.com/articles/indent_with_tabs_align_with_spaces
これね
これが理想だけどエンジニアのレベルが高くないとこのルールを守るのは難しいからスペースにしてるのが大半
ただしGoは強制フォーマッタでこれを解決してる
個人プロジェクトなら最初から好きなタブ幅にすればいいからタブにするメリットもあまりないし
気分でタブ幅変えれるのは結構メリットあるけどね
284デフォルトの名無しさん (ワッチョイ b310-3P54)
2024/12/22(日) 09:27:48.67ID:I7bhR46i0 俺はずっと>>274の前者でインデントはタブだなぁ
なおタブの幅はスペース4個分
なおタブの幅はスペース4個分
285デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
2024/12/22(日) 11:59:15.10ID:US35TJKc0 「自転車置き場の屋根の色」現象発生中
286デフォルトの名無しさん (スッップ Sdaf-3P54)
2024/12/22(日) 13:03:56.05ID:ci/BAnbad この手の話は職場のルールで決まるから個人がどうこうは関係ないよな
ただ自分のツールなんかは好きにしろだが
カッコ、演算子、型と変数の宣言の間の空白などもめる話題はいくらでもある
ただ自分のツールなんかは好きにしろだが
カッコ、演算子、型と変数の宣言の間の空白などもめる話題はいくらでもある
287デフォルトの名無しさん (ワッチョイ 195d-PrDn)
2024/12/22(日) 16:36:51.22ID:J7cuP3Nu0 >>285
「原子力発電所の建設」について議論したいなら付き合うよ、それで議題は?
「原子力発電所の建設」について議論したいなら付き合うよ、それで議題は?
288デフォルトの名無しさん (ワッチョイ 957c-Th9R)
2024/12/22(日) 17:09:33.96ID:dFQQq0VB0 まあreshaperでテーム共有設定使うだけだしな
289デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
2024/12/22(日) 19:48:07.14ID:US35TJKc0 >>287
では失礼して
Unity製ゲームのMOD開発なんかでリフレクション使いまくるのもなんかスマートじゃないから、
aelij氏のIgnoresAccessChecksToGeneratorを魔改造させてもらってフィールド含めて全パブリック&readonly解除でゲームのコードに全アクセス出来るようになってめっちゃ捗るようになったのだけど、
欲が出て標準ライブラリにも手を出したくなってやってみたらmscorlibなんかはReferenceAssemblyだからプライベートフィールドはそもそもdll内に含まれてないから書き換えられないんだよね。
ランタイム時の実体dllを決め打って渡せばstring.m_firstCharとかList<T>._sizeとかも全てアクセスできるようにはなるんだけど決め打ち渡しもスマートじゃないからどうにか自動で解決をしたい。
ILSpyやmono.cecilにはランタイム時の実体dllを特定するコードあるんだけどbuildアクションから同じ事するのって可能だろうか?
では失礼して
Unity製ゲームのMOD開発なんかでリフレクション使いまくるのもなんかスマートじゃないから、
aelij氏のIgnoresAccessChecksToGeneratorを魔改造させてもらってフィールド含めて全パブリック&readonly解除でゲームのコードに全アクセス出来るようになってめっちゃ捗るようになったのだけど、
欲が出て標準ライブラリにも手を出したくなってやってみたらmscorlibなんかはReferenceAssemblyだからプライベートフィールドはそもそもdll内に含まれてないから書き換えられないんだよね。
ランタイム時の実体dllを決め打って渡せばstring.m_firstCharとかList<T>._sizeとかも全てアクセスできるようにはなるんだけど決め打ち渡しもスマートじゃないからどうにか自動で解決をしたい。
ILSpyやmono.cecilにはランタイム時の実体dllを特定するコードあるんだけどbuildアクションから同じ事するのって可能だろうか?
290デフォルトの名無しさん (ワッチョイ e376-ZNoy)
2024/12/22(日) 19:55:36.15ID:zKZ5mRgv0 はい
291デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
2024/12/22(日) 20:10:00.61ID:US35TJKc0 へー
なんだかもうゲームよりMOD開発、MOD開発より開発環境開発の方が長くなっちゃってますわ
なんだかもうゲームよりMOD開発、MOD開発より開発環境開発の方が長くなっちゃってますわ
292デフォルトの名無しさん (ワッチョイ 832b-8NiF)
2024/12/22(日) 20:35:36.44ID:96LlHbpn0 だって、ここ
別にゲーム開発やないし
プログラムやで
別にゲーム開発やないし
プログラムやで
293デフォルトの名無しさん (ワントンキン MM33-MooF)
2024/12/22(日) 20:50:51.80ID:F7NwxYJ7M いまだにmonoで簡単にいじられまくりゲームあるのか
294デフォルトの名無しさん (ワッチョイ 0364-PrDn)
2024/12/23(月) 00:10:04.98ID:XKMn6iMr0 >>289
日本語がややこしいけど
①標準ライブラリのPrivate含む全フィールドにリフレクションを使わずにアクセスして書き換えたりしたい
んで、
②実体DLLを決め打ちで渡せばアクセスできるってところまでできてる
あとは
③実体DLL取得を自動化したい
④なおかつビルドプロセスに組み込みたい
ってことか
MOD開発とか知らんけど面白そうじゃん
日本語がややこしいけど
①標準ライブラリのPrivate含む全フィールドにリフレクションを使わずにアクセスして書き換えたりしたい
んで、
②実体DLLを決め打ちで渡せばアクセスできるってところまでできてる
あとは
③実体DLL取得を自動化したい
④なおかつビルドプロセスに組み込みたい
ってことか
MOD開発とか知らんけど面白そうじゃん
295デフォルトの名無しさん (ワッチョイ 0364-PrDn)
2024/12/23(月) 00:36:21.82ID:XKMn6iMr0 いまいち細かい要件がよくわからんけどAppDomain.CurrentDomain.GetAssemblies()で現在ロードされているすべてのアセンブリが取得できるらしいが、これ試した?
駄目だったならどういうところがダメだったのか教えてくれ
駄目だったならどういうところがダメだったのか教えてくれ
296デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
2024/12/23(月) 17:33:16.62ID:HWay8A+S0 >>295
要するにIgnoresAccessChecksToGeneratorの話でMSBuild内のコードとして動くものだからそれやってもMSBuildがロードしてるものが返されるだけとなる
ILSpyなんかもtypeof(object)などから解決してるので上記の理屈でそのまま移植はできない
要するにIgnoresAccessChecksToGeneratorの話でMSBuild内のコードとして動くものだからそれやってもMSBuildがロードしてるものが返されるだけとなる
ILSpyなんかもtypeof(object)などから解決してるので上記の理屈でそのまま移植はできない
297デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
2024/12/23(月) 17:42:25.10ID:HWay8A+S0 >>293
マルチメインじゃなくmodフレンドリーなゲームならil2cpp化せずそのまま出してるゲームも普通に多いよ
改変やチート防止のためなら難読化含めてやったところでそこまで難易度上がらないからそれ目的ならRustみたいにカーネルドライバ付けるしかない
マルチメインじゃなくmodフレンドリーなゲームならil2cpp化せずそのまま出してるゲームも普通に多いよ
改変やチート防止のためなら難読化含めてやったところでそこまで難易度上がらないからそれ目的ならRustみたいにカーネルドライバ付けるしかない
298デフォルトの名無しさん (ワッチョイ a374-PrDn)
2024/12/24(火) 18:58:01.04ID:9YLK2p020 個人開発の局所的な用途のマイナーツールの話が原発の建設並の重大事なのか
ちょっと難しすぎてわかんねえな
ちょっと難しすぎてわかんねえな
299デフォルトの名無しさん (ワッチョイ df79-0Q8V)
2024/12/24(火) 19:41:54.52ID:RgkKZ0Pj0 原発ってただの湯沸かし器じゃん
燃料がちょっとヤバイってだけで高尚なC#のプログラムと比較すんなよ
燃料がちょっとヤバイってだけで高尚なC#のプログラムと比較すんなよ
300デフォルトの名無しさん (スッップ Sdaf-3P54)
2024/12/25(水) 08:00:53.24ID:vP0zyznod C#だってただの道具
しかもC#だけじゃお湯も沸かせない
高尚とかちゃんちゃらおかしい
しかもC#だけじゃお湯も沸かせない
高尚とかちゃんちゃらおかしい
レスを投稿する
ニュース
- 【TV】ファン5万人がガチで投票! プロ野球総選挙、栄えある1位は [牛丼★]
- 【速報】政府、与党がNISA未成年解禁を検討 ★2 [蚤の市★]
- へずまりゅう氏が言葉失う 街中で女性から「息子はあなたみたいな人間に育たぬよう教育しています」 [jinjin★]
- 【*彡】巨人・坂本勇人 『流れ星に何を願うか』の質問に「結婚相手」と即答、結婚願望告白 女性ファンから歓声と悲鳴 [鉄チーズ烏★]
- 「まだ朝7時に通勤してるんですか?」人気VTuberが語った“働き方への提言”に議論沸騰 [夜のけいちゃん★]
- 【女子ゴルフ】都玲華(21)30歳年上の既婚者コーチとの交際関係とコーチ契約解消「昨年からお付き合いしてました。」 [阿弥陀ヶ峰★]
