C#, C♯, C#相談室 Part98at TECH
C#, C♯, C#相談室 Part98 - 暇つぶし2ch1:デフォルトの名無しさん
24/06/29 19:18:41.95 NohAfdfx0.net
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
■Visual Studio 2022 Community(無償の統合開発環境)等はこちら
URLリンク(www.visualstudio.com)
■コードを貼る場合はこちら
URLリンク(ideone.com)
■前スレ
C#, C♯, C#相談室 Part97
スレリンク(tech板)
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2:デフォルトの名無しさん (アウアウエー Sa82-viZ1)
24/07/06 09:45:55.57 tDR9EaCva.net
もう人居ないねここ

3:デフォルトの名無しさん (ワッチョイ 2383-KMba)
24/07/07 11:10:38.82 LxwuJOKK0.net
C#ってそんな廃れたのか、、、

4:デフォルトの名無しさん
24/07/07 13:30:41.60 nRN7u0+PM.net
星の手紙
スターレター

5:デフォルトの名無しさん (ワンミングク MM5d-o7Qo)
24/07/19 08:08:33.90 8mtfDqm5M.net
プロパティって、別クラスからprivateなフィールドにアクセスするためのメソッドという理解であってます?
自分のクラス内で完結するのであれば直接フィールドを操作すればいいですよね?

6: 警備員[Lv.10][芽] (ワッチョイ 467c-yD6P)
24/07/19 10:22:26.61 rAu+wfGe0.net
基本的にはそうだけどちょっとした小細工を仕込みたい場合とかにprivateプロパティという選択肢もなくはない
遅延初期化するものとかね(この用途では今はLazy<T>を使うけど)

7:デフォルトの名無しさん (ワッチョイ 2601-4WTN)
24/07/19 10:35:14.12 IMeiXUMG0.net
フィールドのようにアクセス可能なクラスのインターフェースというかAPIを定義するのがプロパティ
中身は他のメソッド呼び出しの場合もあれば他のプロパティを元にした計算だけ行う場合もある

クラスのユーザーがフィールドにアクセスする必要がなく
継承して拡張する際にもフィールドにアクセスする必要がなく
クラス内からのフィールドアクセス時にも常にチェックすべき事前条件がなければ
privateフィールドを単純にラップするプロパティは基本的に不要

8:デフォルトの名無しさん (ワンミングク MM5d-o7Qo)
24/07/19 22:05:33.66 8mtfDqm5M.net
ありがとうございます
もう一点聞きたいんですが、プロパティ自体はアンチパターンではないですよね?
ある本にセッターを使うなら別にメソッド用意しろと書いてありました
理由はクラス外からメンバを操作してはいけないのと、値チェックができなくなるからと
これらは別にプロパティでもできるんで(そもそもプロパティはメソッド)、間違ってますよね?

9:デフォルトの名無しさん (ワッチョイ cd01-VZYF)
24/07/19 23:31:48.25 QqZ5EOxb0.net
>>8
>ある本にセッターを使うなら別にメソッド用意しろと書いてありました
状況による
publicなセッターのほうが望ましいケースが稀なのは確か

10:デフォルトの名無しさん (ワッチョイ ae68-o7Qo)
24/07/20 16:52:32.64 euMlvBLf0.net
ぞもそもそれc#の本なのか?
なぜタイトルをぼかす

11:デフォルトの名無しさん (ワッチョイ 8178-Cq3U)
24/07/22 06:36:28.74 NgZAB9xM0.net
セッターゲッターとか久しぶりに聞いた気がする

12:デフォルトの名無しさん (ワッチョイ 41d7-pVLH)
24/07/29 14:46:58.61 AZP0hoR90.net
あれ?.NET CoreだとC++/CLIの1次元array使えない?

13:デフォルトの名無しさん (ワッチョイ 41d7-pVLH)
24/07/29 16:17:59.63 AZP0hoR90.net
よくよく考えたらすれ違いだなすまねぇ

14:デフォルトの名無しさん
24/08/13 12:58:30.17 qhmHbPMW0.net
実行ファイルのあるフォルダを取得しようとぐぐってためしたらカレントディレクトリを返してくるんだが・・なんか変わった?

15:デフォルトの名無しさん
24/08/13 13:03:50.93 NwhX+oy+0.net
取得するコード書いてくれにゃ答えられんよ
あと.NET 5以降なのか.NET Frameworkなのかとか

16:デフォルトの名無しさん
24/08/17 11:34:37.81 0uZEK+kK0.net
テキトーな疑問だけ投げて二度と来ない単発荒らしか>>14

17:デフォルトの名無しさん
24/08/17 18:26:07.56 7ysjw50y0.net
それもまたよし

18:デフォルトの名無しさん
24/08/18 14:40:47.88 SsGk7ZLr0.net
>>16
寂しがり屋なの?
来てほしかったの?
反応がない=同じ現象に出くわした人がここにはいない、ってことだからここにきても意味ないじゃん
もう返事もらってんだよ、それくらい理解できないの?なさけない

19:デフォルトの名無しさん
24/08/18 16:52:26.07 GtHdHJ0K0.net
見本のような基地外だな

20:デフォルトの名無しさん
24/08/18 19:24:32.75 HTF0RcUb0.net
こいつは「本物」だぁ

21:デフォルトの名無しさん
24/08/18 20:39:07.06 zJcx09U/M.net
いつからか
こんな限界集落のマ板なんかに変なの居着いた

22:デフォルトの名無しさん
24/08/19 06:26:30.30 SGLtwM6z0.net
ここはム板

23:デフォルトの名無しさん
24/08/19 06:31:58.08 QkiVzACw0.net
>>21
マ板の方はご遠慮いただけますでしょうか

24:デフォルトの名無しさん
24/08/19 07:35:48.04 I+C1rt+hM.net
ムやったね……

25:デフォルトの名無しさん
24/08/23 20:08:18.72 NK40bFjG0.net
コンソールアプリで画面を上側へスクロールしたときに文字が表示されません
Console.BufferHeightで行数を増やしているのに、何故か反映されない
Win10では正常に表示されたのに、Win11では表示されない

26:デフォルトの名無しさん
24/08/25 23:22:26.70 bGprUffz0.net
ググっても出ない中々難しめの質問AIにしたらサンプルコードまで答えてくれやがった
正常動作するかは知らんが
仕様諸々精査してできるかどうかの判断を自動でやってくれるのは楽だわ

27:デフォルトの名無しさん
24/08/26 00:14:24.04 dB7SOU9G0.net
回答を検証できる質問でないとハマるよ
それっぽい回答来たから鵜呑みにしてたけど後からハルシネーションだったとわかってガックリ来た
付き合い方を考えないと

28:デフォルトの名無しさん
24/09/01 11:24:48.74 LL2O7mfa0.net
vscodeで作成してます。.NETではなく.NET Framework用でコンパイルしたいのですがcsprojをいじればいいんですか?イマイチぐぐっても分かりませんでした…

29:デフォルトの名無しさん
24/09/01 13:03:18.55 Z5xSjoFS0.net
ターゲットフレームワークを変更する
おそらくNugetの依存関係が壊滅するのでライブラリのバージョン等を頑張って修正
まあ、そのレベルだと素直にVSでプロジェクト作り直した方が確実に早い

30:デフォルトの名無しさん
24/09/02 22:54:25.71 h77XuHn20.net
>>29
依存関係とか変更とかまったく分からないのでnet48でプロジェクトを作りました
しかしc#が勝手に最新で作り出すのでなんとかしないと…

31:デフォルトの名無しさん
24/09/02 23:05:06.91 h77XuHn20.net
implicitusingを無効にしたらいけました!
coreCLRの開始イベント使ってねーぞみたいな注意が出ますがとりあえず無視します

32:デフォルトの名無しさん
24/09/03 07:44:08.63 PDmQOkMO0.net
だからそんなこともわからんレベルなら
普通のVisualStudio IDE使ってテンプレートから作ってもらえ
.NET Core系用と.NET Framework系用でテンプレート別々にあるぞ

33:デフォルトの名無しさん
24/09/03 08:49:37.91 4PaG9Ni+0.net
.NET Frameworkで作るのならVS Codeにこだわる意味が分からんな

34:デフォルトの名無しさん
24/09/03 09:54:47.33 +c3TQ6I00.net
初心者ならプロジェクト作成以外もVisual Studio使った方が楽じゃないか

35:デフォルトの名無しさん
24/09/03 10:47:54.65 zynfI0Xf0.net
初心者以外でもvisual studioでいいのでは?
VS Codeって何のためにあるの?

36:デフォルトの名無しさん
24/09/03 18:52:22.72 tn1VFMYP0.net
>>35
自由度の高い拡張機能が作成可能とか?
メリットいかせずに「他人と違ったことする俺すげぇ」ってバカのほうが多い気はする
そして拗れてcsc.exeへ。勉強効率も悪くろくなもの作れなくなるバカの末路
ちなみにどっちも初心者スレで「やり方わかりません教えて」みたいな質問者見たことある

37:デフォルトの名無しさん
24/09/03 20:51:18.41 AjfoquOu0.net
VS CodeはVSがインストール出来ない環境で使うんだよ

38:デフォルトの名無しさん
24/09/03 22:16:15.43 KfZ8HCC90.net
maui、xamlとかモリモリ書かないならvscodeで.netは普通にいけると思う。

39:デフォルトの名無しさん
24/09/03 22:57:01.51 ySKcrG5T0.net
他のフレワークだとVSCode前提みたいなところがあるから、基本的にコマンド一発でテンプレートやコンフィグ全生成してくれるのが殆どなんだよなー
自分はC#使うのは2~3割くらいに減ってるから、一旦VSのテンプレートで生成した後にVSCode持ってって作業してる。
別にVSのまま作業しても良いんだけど、他がずっとVSCode使ってるからそのまま殆どなんとなく。
ビルドの設定追い込む時とかはVSに戻って作業する

40:デフォルトの名無しさん
24/09/03 23:52:43.04 PSfMpKNk0.net
.NET8に移行しようとしてSystem.Drawing.Commonをnugetで取得して、参照のパッケージのところにもちゃんと入ってるのにビルドするとアセンブリ追加しろやってエラーが出ます
System.Drawing.Commonに限った話じゃないとは思うんですが、nugetしてるはずなのに使えないケースってあります?なんか対処法とかありますかね
nugetのフォルダのsystem.drawing.common.dllを直接追加してみるとエラーが出るし……

41:デフォルトの名無しさん
24/09/04 05:59:16.88 vTUmaV8z0.net
依存関係が足りないとか

42:デフォルトの名無しさん
24/09/04 08:45:46.87 0YyVWJnw0.net
>>40
ターゲットOSをWindowsにしなきゃだめになったんじゃなかったっけか

43:デフォルトの名無しさん
24/09/04 21:50:02.76 Gc+g798x0.net
>>41-42
ありがとうございます。解決しました。
プロジェクトじゃなくて、プロジェクトが参照してるライブラリが古くて画像周りがおかしかったことが原因でした……
いやーてっきりプロジェクトに問題があるものだとばかり。
お手数をおかけして申し訳ありませんでした。

44:デフォルトの名無しさん
24/09/05 22:43:12.04 IsSxmn+e0.net
string のなかに " いれたいんだができるん?
string x=""+"aaaa"+"" 

45:デフォルトの名無しさん
24/09/05 22:47:08.76 oSzSq1tU0.net
>>44
こういうこと?
string x = "\"+\"aaaa\"+\"";

46:デフォルトの名無しさん
24/09/05 23:13:37.12 IsSxmn+e0.net
それでできそうかも。試してみる。
プロセス起動させるとき、引数の変数にパス入れるけどパスの中にスペースがあると
だめなんでそれの回避として " が必要。

47:デフォルトの名無しさん
24/09/05 23:26:05.02 IsSxmn+e0.net
だめっぽいな。
aaaaはstring の変数でもってきてる。

48:デフォルトの名無しさん
24/09/06 00:01:44.71 fMgfL8Dd0.net
だめっぽいのは君の書き方じゃないか

49:デフォルトの名無しさん
24/09/06 00:10:56.19 FMgRnbLf0.net
バックスラッシュの意味理解しよ

50:デフォルトの名無しさん
24/09/06 00:19:55.27 4rrS/3cJ0.net
string s = "aaaa";
string x = $"\"{s}\"";

51:デフォルトの名無しさん
24/09/06 02:38:09.45 kwoFnA2yd.net
System::Diagnostics::Process::Startとかだろ
"\"" + filePath + "\""

52:デフォルトの名無しさん
24/09/06 03:15:10.46 CmuGhD0i0.net
なんでわざわざ足してんの?

53:デフォルトの名無しさん
24/09/06 05:55:59.83 c0VNDQG50.net
Windows君はパスに空白含んでたらバカになるからダブルクォートしないといけないからね
>>44
string x = """aaaa""";
これで

54:デフォルトの名無しさん
24/09/06 05:57:26.94 c0VNDQG50.net
>>47を読んで無かったわww
それなら>>51でいいか

55:デフォルトの名無しさん
24/09/06 07:11:30.93 6dWW3slR0.net
string x = $"\"{s}\"";
これ採用 TNX!

56:デフォルトの名無しさん
24/09/06 08:03:43.33 atJH5uZ+0.net
もうちょっとあれこれ繋げるもんがあるならともかく
たったそれだけにString.Format使う意味ある?

57:デフォルトの名無しさん
24/09/06 10:26:55.33 q1RifKtNM.net
2回以上+で結合すると無駄なアロケートとコピーが発生する
ループしないなら気にする必要ないけど、+に拘るメリットも特にないな

58:デフォルトの名無しさん
24/09/06 14:31:56.02 atJH5uZ+0.net
なんかふと気になってILSpyしてみたら
>>55程度だと+連結に置き換えられてて、もう一つ変数増やしたらDefaultInterpolatedStringHandler処理になってたわ

59:デフォルトの名無しさん (ワッチョイ dfa7-cMiB)
24/09/06 22:02:01.77 4rrS/3cJ0.net
>>58
C#10から実装が変わってかなり高速化したらしい

60:デフォルトの名無しさん
24/09/08 14:19:12.90 Lcq5kqTI0.net
URLリンク(ufcpp.net)
属性付加について質問です
上リンクにバブルソートの途中経過を出力する例がありますが、
/// <summary>
/// SHOW_INTERMEDIATE というシンボルが定義されているときのみ
/// 配列の内容をコンソールに表示する。
/// </summary>
[Conditional("SHOW_INTERMEDIATE")]
がよくわかりません。
このシンボルの定義はどこで誰がするのでしょう?
途中経過を見るかどうかならbool型を渡すだけでできると思うのですが属性を使うメリットは何でしょう?

61:デフォルトの名無しさん
24/09/08 16:40:59.79 TkJTVSzCH.net
URLリンク(hatsune.hatenablog.jp)
の条件つきコンパイルシンボルに
「SHOW_INTERMEDIATE」も指定して実行したときだけ
IntermediateOutput(array);
が呼ばれる
ソースコードをいじらすともプロジェクト設定だけで動作を切り替えられる

62:デフォルトの名無しさん
24/09/08 16:46:45.34 TkJTVSzCH.net
URLリンク(ufcpp.net)
の例だけなら本来ならConditional属性より#ifで動作を切り替えるほうが自然かもしれないけど、メソッドに属性をつけることで「コンパイル時の」動作を切り替えることもできる

63:デフォルトの名無しさん
24/09/08 16:56:39.71 0eGKbJyF0.net
ありがとうございます!
弄って試してみます

64:デフォルトの名無しさん
24/09/08 22:39:41.68 QA3NbpCiM.net
#if~#endifだけでこと足りるけど、使いすぎるとコードが見にくくなる。
Conditional属性ならメソッドを呼び出す部分に何も増えないからすっきり。

65:デフォルトの名無しさん
24/09/10 18:08:51.32 pYXFiK6k0.net
1年ぶりくらいにC#開発やったらPrismのライセンスが変更されててビックリした
条件があるとはいえ商用で使っていくのは厳しいからどうしようか迷ってる
とりあえずv9.0未満ならMITライセンスのままだから使えないこともないんだけど、このまま使うのもなぁ…

66:デフォルトの名無しさん
24/09/10 23:39:42.30 FmO9o6ji0.net
c#がニッチになればなるほど有料ライブラリの存在感が増してきて足元見られてる感はある
MAUIとか、何かググるとsyncfusionのボッタクリライブラリの広告ばっか出てきてめちゃくちゃげんなりする
どうしてこうなった・・・

67:デフォルトの名無しさん
24/09/11 10:04:33.53 Mwxa/fl+0.net
c#13来ますね

68:デフォルトの名無しさん
24/09/11 15:28:02.94 NVe6C6lkd.net
C# Dev Kit がゴミすぎてC#13なんてまともに動くはずもないから無視してOK
URLリンク(marketplace.visualstudio.com)

69:デフォルトの名無しさん
24/09/11 15:32:38.70 NVe6C6lkd.net
>>66
Visual Studio for macの廃止で
MAUI の無料の開発環境はゴミすぎる VScode + C# Dev Kit しかなくなったからな。
もうお金持ちしか使っていない。

70:デフォルトの名無しさん
24/09/11 15:34:46.79 NVe6C6lkd.net
MAUI アプリは市場的に iOS 抜きでは考えられず、そうなると「mac上での開発」が大前提なのに
Visual Studio for macが廃止になったからな。

71:デフォルトの名無しさん
24/09/11 18:27:03.65 XegoQ2KD0.net
Expressも更新しないしドケチ弊社はvscodeですよ

72:デフォルトの名無しさん
24/09/11 21:07:10.19 tsOfJ2jSM.net
c#13の恩恵受けるの利用者の1%以下説

73:デフォルトの名無しさん
24/09/12 00:30:07.84 tw/IepBM0.net
結局あと数年は使うデスクトップアプリなら何使えばいいの

74:デフォルトの名無しさん
24/09/12 00:57:04.66 abJIVzSD0.net
Forms

75:デフォルトの名無しさん
24/09/12 06:52:35.11 3diDP2dM0.net
C#13はあんまり惹かれる内容が無くて……

76:デフォルトの名無しさん
24/09/12 11:07:15.58 0rD/09ib0.net
結局のところMAUIはAdobe FlashやSilverlightの失敗と同じ道を歩んでしまった。
スマホアプリとデスクトップアプリの統合なんてできるわけないのに。
アップルのMac Catalystも壮大にコケただろ。

77:デフォルトの名無しさん
24/09/12 11:29:41.24 0D4bKRqg0.net
いやいや、スマホとデスクトップのフレームワーク統合はReact NativeやFlutterで成功してるよ
MAUIが失敗したのは単にそれらの競合を上回るだけの魅力がなかったから
そもそも当のMS自身がMAUIではなくReact Nativeを主力として採用しているわけで、ドッグフーディングすらまともにやられてない冗談みたいなゴミよ

78:デフォルトの名無しさん
24/09/12 15:26:52.97 aCcjSW4y0.net
魅力が無いという消極的な話じゃなくバグがありすぎるんだよ
MAUI使うならMAUI Blazor一択

79:デフォルトの名無しさん
24/09/12 17:43:21.90 eHy+J5v3d.net
Flutterで作られたデスクトップアプリってあるの?ないこたないんだろうけど、聞いたことがない

80:デフォルトの名無しさん
24/09/12 20:57:36.84 XSV6/xEMp.net
ラムダ式だらけで何やってるか分からん
名前付きならその名前でなんとなくやってる事が推測出来るのに

81:デフォルトの名無しさん
24/09/13 00:37:39.75 f6FEBSA20.net
具体的にどんなコード?
触れたことないからどんなもんか気になる

82:デフォルトの名無しさん
24/09/13 01:46:12.54 2J3jv9tY0.net
ラムダだとか無名なんたらって引数には名前書かせたりするのがイマイチだよな
全部匿名で書かせろや

83:デフォルトの名無しさん
24/09/13 06:49:44.21 Xxd/8jpe0.net
引数に名前無いと式内でどうやってコード書くんだ

84:デフォルトの名無しさん
24/09/13 07:04:31.00 2PWLnrX2H.net
最近のC#だと使わない変数/引数は「_」で書けるけどこれのことかな

85:デフォルトの名無しさん
24/09/13 08:46:26.70 67a82NYw0.net
破棄は呼び出し側だし、_だけで変数名にできるけど、やる意味無いしなぁ

86:デフォルトの名無しさん
24/09/13 09:50:43.10 5m8mJFP+p.net
名前無いと中身コメント書かれて無いと何やってるかますます分からないだろ
おまえら自分の事しか考えて無いのかよ

87:デフォルトの名無しさん (ワッチョイ 6abf-MWGe)
24/09/13 10:03:36.58 vCoJKF930.net
可読性がどんどん下がっていく

88:デフォルトの名無しさん (ワッチョイ f9d4-tR61)
24/09/13 10:18:51.22 WHSymIlK0.net
kotlinが単一引数ならitで書けたりするよな

89:デフォルトの名無しさん
24/09/13 11:58:13.17 sF2/C+u40.net
実例出さないとコードを書いたやつの問題なのか読んでるやつの問題なのかわからないな
普通にどっちもありえる

90:デフォルトの名無しさん
24/09/13 14:56:26.94 HD5QYSk40.net
OpenAIが複雑な推論能力をもつAIモデル「OpenAI o1」と「OpenAI o1-mini」を発表、プログラミングや数学で高い能力を発揮
URLリンク(gigazine.net)

91:デフォルトの名無しさん
24/09/14 00:38:39.43 wZXV9Eo9M.net
宣言してない変数が出てきたらそれに引数割り当てろとかそんなことを言ってるのかな?

92:デフォルトの名無しさん
24/09/14 06:23:25.94 f+klQpwH0.net
JavaScriptかな?

93:デフォルトの名無しさん
24/09/14 13:19:57.57 wZXV9Eo9M.net
new Action<A>(=> Console.WriteLine( s ) );

new Action<A>(Console.WriteLine( s ) );
見たいなことなんじゃないかと

94:デフォルトの名無しさん
24/09/14 13:48:53.85 o3f0Ddoea.net
Rubyのundefined黒魔術のことか

95:デフォルトの名無しさん
24/09/14 22:08:29.61 FSRkRcLf0.net
それコンパイラーが結局最適化するからええやん

96:デフォルトの名無しさん
24/09/26 17:43:19.96 3JTs1+bS0.net
Unityって.NETに移植される予定あるの?
ここ5年ほどは.NETばかりが進化してUnityは時止まってる感あるけど

97:デフォルトの名無しさん
24/09/26 18:08:10.54 Qc6+rELv0.net
移植って何だよ
言ってる意味が分らんぞ

98:デフォルトの名無しさん
24/09/26 18:28:01.53 CKFT+8KQa.net
エスパーすると…
わからん

99:デフォルトの名無しさん
24/09/26 20:43:41.41 78wjS3t+0.net
Unityスレでやれよ

100:デフォルトの名無しさん (ワッチョイ 1610-sUBN)
24/09/27 06:17:43.36 H6GdPqZc0.net
ライブラリ使うってレベルじゃねぇぞ

101:デフォルトの名無しさん
24/09/28 15:53:03.33 Nide2Zz10.net
あのースレ違いとは重々承知の上なんですが、ASP.NETの求人ってどんな感じですかね
これまでずーっとC#のデスクトップアプリとかまぁローカルなシステム作りばかりやってきたんですが、いくらなんでも未来がないからウェブへの転職狙ってるんですよね
でキャリア活かそうとASPいじりはじめたんですが今はどこもかしこもjavascriptみたいなイメージで
業務でASP使ってるとかASPで転職活動したとかそういう人いたら話聞かせてほしいんです

102:デフォルトの名無しさん
24/09/28 17:25:46.96 aGtM+jOEd.net
どう考えても普通にJavaScriptやる方がいい。
C#履修者ならTypeScript自体の習得は爆速だよ、本気でやれば多分一週間もかからない。何しろ設計者が同じなので書き味に違和感が無くなるのはすぐのはず
問題はReact、Vue、Nextなどフレームワークやライブラリのスキルだけど、正直ここは常にコロコロ変わって勉強が必要な分野なので途中参加でもあまりハンデはないと思う
転職しても、JavaやC#のお硬い言語のキャリアは重宝されるから決して無駄にはならないはず
ASP.NETやBlazorの需要は限定的だし先行き不透明過ぎる
自分も似たようなことしたので頑張って

103:デフォルトの名無しさん (ササクッテロ Sp47-i443)
24/09/28 18:03:06.22 vky4rjg9p.net
スクリプト言語は糞

104:デフォルトの名無しさん (ワッチョイ 72d1-sm05)
24/09/28 18:12:04.40 iFauIOzc0.net
クソでも使えるやつは優秀

105:デフォルトの名無しさん
24/09/28 20:12:23.11 Dk+INUbR0.net
業務でASPNETCoreバリバリ使ってはいるけど
ASPNET単体の知見が転職活動で役に立つとは思えない
というか、C#ができてHTML/CSS/JavaScriptが読み書きできる人なら普通に無勉強/経験なしでもASPNETで開発できちゃうからセールスポイントにならないのよね
うちんとこはReactみたいなモダン()なフレームワークは使ってないけど、それでもJS/TSの知識は必須
愚直にWeb系の勉強をするのが先かなと思うよ

106:デフォルトの名無しさん
24/09/28 23:13:28.34 Nide2Zz10.net
>>102 >>103
参考になりました。とりあえずHTML/CSS/JavaScript(TypeScript)辺りちゃんとやろうかと思います
ただなぁ……自習してました!じゃなんもアピールにならない気もするんだよなぁ……結局実務経験0だし
プログラミングスクールでも受講してある程度やったと保証になるものを取りに行こうかな

107:デフォルトの名無しさん
24/09/29 00:27:31.57 5ys4rELsM.net
github見せろよ

108:デフォルトの名無しさん
24/09/29 02:19:57.40 xonfxjDO0.net
むしろプログラミングスクールの経験のほうが誰もまともに受け取らないよ
自走力がないやつと思われる
素人じゃないだろうしわざわざナメられる道を通るのはオススメしない

109:デフォルトの名無しさん
24/10/01 15:20:52.03 Ed7m5Yrp0.net
github見せると、趣味がバレちゃう・・・

110:デフォルトの名無しさん (ワッチョイ d3b3-Ffi2)
24/10/02 00:50:46.59 xje2sb9e0.net
そもそもSVNの現場ばかりでgithubの使い方よくわからないレベルだわ
というか世の中10年前にはSVNなんてオワコン言われてたってのが信じられねぇ

111:デフォルトの名無しさん
24/10/02 02:07:15.64 PWZ+bQBz0.net
個人で使って覚えればいいじゃん

112:デフォルトの名無しさん
24/10/02 11:24:45.59 1LKJTfPy0.net
個人で使う限りじゃ4つくらいしかコマンド使わんからなぁ

113:デフォルトの名無しさん
24/10/03 20:33:51.33 +e3Oo1T60.net
C#13(.net 9)でfieldキーワードが使えるようになるって聞いたのですが本当ですか?
VisualStudioでプレビュー版の.net9入れてみたけど使えないみたいでした
それともプレビュー版だから使えないのでしょうか?

114:デフォルトの名無しさん
24/10/03 21:05:51.32 B9NoCJyO0.net
予定してたけど今回は見送りなんてことは、ままあるからなぁ
URLリンク(learn.microsoft.com)
今のところは入ってないみたいね

115:デフォルトの名無しさん
24/10/03 21:29:33.72 0TFd8a4L0.net
え、一番期待してたのに…
c#でググれの人は何て言ってるんだろう

116:デフォルトの名無しさん
24/10/03 21:39:37.41 +e3Oo1T60.net
ありがとうございます
確かに記載が無いので残念ですが今回は見送りっぽいですね、、、

117:デフォルトの名無しさん
24/10/03 22:03:08.87 B9NoCJyO0.net
URLリンク(github.com)
>たぶんもう C# 13 で入れるもの確定。参考: Language Feature Status
>今入ってないものは入らない。
>field キーワードは「C# 13 GA のタイミングで、 preview で取り込み」みたいな話を URLリンク(aka.ms) で見た。
だそうです

118:デフォルトの名無しさん
24/10/04 00:03:36.27 GSZ7pDda0.net
うーん、微妙か
まぁ.net 10では入るだろうし来年に期待

119:デフォルトの名無しさん
24/10/04 08:49:00.52 mCOfH6eY0.net
どうせ奇数番はサポート短くてスルーだし

120:デフォルトの名無しさん
24/10/04 12:39:45.28 jlwDuTCM0.net
C#追っかけなくなって知識がdotnet4.5辺りでとまっている…
それ以降はrecordとかしかしらん

121:デフォルトの名無しさん
24/10/04 22:48:00.45 Yj1cCLJZ0.net
メモ帳や日記帳アプリみたいな軽いアプリで、ソースコード公開されてて
コードが初心者にも参考になるようなサイトあるでしょうか?

122:デフォルトの名無しさん
24/10/04 23:53:09.57 qaeIDBN+0.net
こんなのじゃあかんのん?
C#で自分だけのメモ帳を作成してみよう!手順・方法を徹底解説します
URLリンク(www.sejuku.net)
ググったら一分も掛からないで出たけど

123:デフォルトの名無しさん
24/10/05 13:21:11.69 AAO+SKFS0.net
>>122
サンクスです、丁寧に書いてあってわかりやすいのですが
設定項目を変更した時の設定反映のタイミングとか
form2からform1にデータ持っていく場合とか
やり直し機能とか
うまい人はどうやって全体まとめてるのかなって

124:デフォルトの名無しさん
24/10/05 16:55:01.99 WPvPgesDM.net
必要な部分だけ他人のコードを読むか自分でひたすら考えて実装してトライアンドエラー
どちらも地力が格段に上がるけど中級者は避けがち

125:デフォルトの名無しさん
24/10/05 17:35:53.95 iTplU71b0.net
それメモ帳というかエディタで大変な箇所を全部端折った記事だから
適当な公開されてるソース読んだ方がいいね

126:デフォルトの名無しさん (ワッチョイ 7fd1-mKKC)
24/10/05 20:37:56.54 fkWv7ZOM0.net
その適当なのほしいって事やろな

ここの連中は冷たいから教えないんだよね

127:デフォルトの名無しさん
24/10/05 22:47:10.24 AAO+SKFS0.net
メモ帳とかの作者さんでソース公開されてる人もC++が多かったり

128:デフォルトの名無しさん
24/10/06 08:44:42.11 6ToZA1R70.net
長大なテキストファイルの先頭から文字数を数えたり
一行の長さを測定して画面右端の折返し位置を決定したり
そういうのって現実的に可能なのか?

129:デフォルトの名無しさん
24/10/06 09:02:55.59 efCavYAy0.net
>>128
発想がズレてる

130:デフォルトの名無しさん
24/10/06 12:41:06.92 RTiROZJD0.net
>>128
逆になんで不可能だと思うの?

131:デフォルトの名無しさん (ワッチョイ 9bfe-ecvX)
24/10/06 13:11:45.32 k/Za2WiE0.net
普通は穴あきバッファを使う
EZ/VZはlessに編集機能を付けるってユニークな設計をしている
設計自体を知りたいなら 「The Craft of Text Editing: Emacs for the Modern World」が参考になるかと

FINALはdumpすると、MIFESとREDの悪口が書いてある:-p

132:デフォルトの名無しさん
24/10/06 14:14:27.86 onWt8ZIM0.net
「穴あきバッファ」なんて初見なんだけどもしかして誤訳じゃない?

133:デフォルトの名無しさん
24/10/06 14:18:43.02 vkebIpm90.net
エディタのバッファ管理用のデータ構造は効率的な編集をサポートするためで
文字数カウントや行の折り返しの話はどういうデータ構造を使うかとはほとんど関係ないよね
今はGap Bufferもあまり主流じゃなくてPiece TableかRopeが使われることが多くなってる

134:デフォルトの名無しさん
24/10/06 14:21:17.70 vkebIpm90.net
興味があれば↓この辺読んでみるといい
TypeScriptだしC++に比べるとわかりやすいはず
URLリンク(code.visualstudio.com)
この辺の話はエディタのコアな部分ではあるけど
>>123の知りたいこととはほぼ関係ない

135:デフォルトの名無しさん
24/10/06 15:19:51.19 6ToZA1R70.net
なにかの文書を画面に表示したい
← 表示したい部分が何行目に当たるか計算する
← 一行に含まれる文字数を知りたい
← プロポーショナルフォントのときはどうするん?
← 行の長さを測定する関数使え
← 一文字ずつ足したり引いたりしながら測定を繰り返す
← 全部の行についてこれやんなきゃかよ?
← やってられない

136:デフォルトの名無しさん
24/10/06 18:49:45.21 TXz4j2F10.net
azukiのソースコード見れば?

137:デフォルトの名無しさん
24/10/06 18:57:38.47 I3D2t/Zs0.net
>>135
>← 表示したい部分が何行目に当たるか計算する
テキストファイルなら頭から読み込むしかなく改行でカウントアップするだけ
>← 一行に含まれる文字数を知りたい
>← プロポーショナルフォントのときはどうするん?
文字数によって折り返し位置が決まるか
表示幅によって折り返し位置が決まるかのどちらか
両方のルールを同時に適用するというのは一般的ではない
プロポーショナルフォントが関係してくるのは後者の場合のみ
表示幅で折り返す場合は指定したRectangleにフィットするよう
よろしくやってくれる表OS提供のAPIがあるので基本的にはそれを使う
APIの内部的では各文字の表示幅を足し算してるが
とりあえずは画面表示部分だけを計算すればいいので
思ってるほど大した計算量ではない
>← やってられない
んなことたぁない

138:デフォルトの名無しさん
24/10/06 20:12:16.90 MCn4L0pH0.net
そもそも公開されてるソースがC++多いからなんだというのか

139:デフォルトの名無しさん
24/10/07 02:48:29.36 x7sAaviV0.net
>←
それより矢印の使い方おかしくね?と思った

140:デフォルトの名無しさん
24/10/07 06:41:02.52 5XNBqMZ+0.net
→えっ

141:デフォルトの名無しさん
24/10/07 07:51:22.02 W61JLdXH0.net
矢印 Unicode(ユニコード)一覧 文字 0g0.org
URLリンク(0g0.org)

142:デフォルトの名無しさん
24/10/07 08:50:05.33 D9AWyaeE0.net
↑↑↓↓→→←←

143:デフォルトの名無しさん
24/10/07 20:30:46.78 0ozgkte7M.net
個人レベルで作るなら別にベストな方法じゃなくても良い
とりあえず作ってみたらいい
そして徐々にブラッシュアップしていけばいい

144:デフォルトの名無しさん
24/10/08 02:42:19.62 xQWM8K5Vd.net
どうせTextBoxかRichTextBox使うから
いちいち行の文字数数えて改行とかという発想がでてこなかったわ
毒されてるんだろうか

145:デフォルトの名無しさん
24/10/08 09:46:02.12 5xpr1xvYF.net
質問者の作りたい物に行番号やカーソル位置座標とか要らなさそうだから
テキストボックスで十分だと思う

146:デフォルトの名無しさん
24/10/09 03:08:11.25 w53uZCE9d.net
行列番号、文字数、ファイルサイズ、ドラッグ移動、カラー絵文字、正規表現検索&置換、折り返し
これぐらい欲しい

147:デフォルトの名無しさん (ワッチョイ 5af9-7zav)
24/10/09 05:37:10.40 u99M/+800.net
こりゃ確かにいろいろと発想がズレてるな

148:デフォルトの名無しさん
24/10/10 01:43:13.48 9oubSm9f0.net
カラー絵文字ってどうやるんだろう

149:デフォルトの名無しさん
24/10/10 01:45:48.53 l5e/OliZ0.net
どうとは?
もしかしてわざわざ白黒にしてるのか?

150:デフォルトの名無しさん
24/10/10 02:14:45.51 To6qDb1x0.net
くるみぽんちおの刑だ!!

151:デフォルトの名無しさん
24/10/10 14:48:43.23 9oubSm9f0.net
まじかテキストボックスがカラー絵文字に対応したのか
週末試してみるわありがと

152:デフォルトの名無しさん
24/10/11 00:26:48.51 zClzE2L70.net
win11で作ったformアプリがwin10で盛大にズレてて頭抱えてる

153:デフォルトの名無しさん
24/10/11 01:05:53.43 bny4Xk3b0.net
>>152
何をもってOSに起因する症状だと判断したの?

154:デフォルトの名無しさん
24/10/11 06:58:29.47 tH3T8XD80.net
OSバージョン毎のフレームサイズの差異とか気にもせずに処理でも書いたか?

155:デフォルトの名無しさん
24/10/11 08:01:38.38 v/PLCR+10.net
OS関係なく単にディスプレイのスケーリングの違いでは

156:デフォルトの名無しさん
24/10/11 09:18:43.20 izME7MQN0.net
それだな

157:デフォルトの名無しさん
24/10/11 09:50:54.30 wAOvgD780.net
フォントとか配置とかやり直しはMacOSのあるあるだと思ってた

158:デフォルトの名無しさん
24/10/21 02:25:35.38 SQ8zGBXh0.net
ライブラリを使用するために下みたいなコード書いた
ライブラリ内でIHoge.Method();の機能を上書きしたいのとHogeで設定されるさまざまな機能を使いたいがためにIHogeを実装したHogeクラスを継承してMethod();を隠蔽、そのうえでライブラリから呼び出されるようにIHogeをさらに継承?実装させてる
ちょっと無理矢理感強いけどこれはアリですか?
ライブラリの中

IHOGE.Method();

public interface IHoge
{
public void Method();
}
public class Hoge : IHoge
{
public void Method()
{
元の処理
}
}
自前で作ったクラス
public class NewHage : Hoge,IHoge
{
public new void Method()
{
上書き処理←やりたいこと
}
}

159:デフォルトの名無しさん
24/10/21 02:45:34.93 SQ8zGBXh0.net
>>121
亀レスだけどすごいのあったぞ
中身見てないけど多分お前が望んでるやつだと思う
URLリンク(sumiox.com)

160:デフォルトの名無しさん
24/10/21 08:25:43.38 451kbP4c0.net
>>158
Hoge.Methodにvirtual
NewHage.Methodでoverride

161:デフォルトの名無しさん
24/10/21 12:38:44.14 1/IbrF450.net
>>158
それがやりたいことなら別にいいんじゃね?
Hogeの他のメソッドがMethod()を呼ぶとか
Method()がHogeの他のメソッドを呼ぶとかの関係が出てくると
newを使わない場合に比べるとバグるリスクが高くなるような気はする
インターフェース+コンポジションにしておけばバグるリスクは低くなる
その代わりに多少書く手間がかかる

162:デフォルトの名無しさん
24/10/21 12:53:33.54 bUjh45Ks0.net
>>160
Hogeはライブラリの中の実装だからvirtualにできないのつらみ
>>161
なるほどありがとう

163:デフォルトの名無しさん
24/10/22 12:35:56.21 SqPRTKfI0.net
newで上書きしたことないな

164:デフォルトの名無しさん
24/10/22 19:02:31.64 4SydPJoD0.net
>>163
なんかchatGPTが教えてくれた

165:デフォルトの名無しさん
24/10/22 19:03:43.61 4SydPJoD0.net
てかVisualStudioが教えてくれた
緑波線でnewしてくださいって
public new 戻り値の型 メソッド名

166:デフォルトの名無しさん
24/10/23 20:43:06.26 laRxPcH30.net
ML.NETを試してみたら思いの外お手軽で面白いな
アプリにさくっと組み込めそうだ

167:デフォルトの名無しさん
24/10/23 21:09:39.51 KLvEEO4T0.net
>>166
薄い本があるので入手お勧め

168:デフォルトの名無しさん
24/10/24 06:52:54.39 OBQWEe3S0.net
.NET MAUIで試したことあるけどWindowsはいけたがAndroidではトレーニングでエラーはいた記憶

169:デフォルトの名無しさん
24/10/27 08:19:05.51 9uOX0V+f0.net
>>159
サンクスです、これはすごいな
解説がおおくてわかりやすい
これのソースコードがダウンロードできたらよかったのに

170:デフォルトの名無しさん
24/11/01 19:03:45.14 lJMjrugG0.net
CookieってSystem.Text.Jsonでシリアライズ・デシリアラズするとDomainKey変わっちゃってSet-Cookieで同じ名前のクッキー来ても違う奴判定されてダブるんだな
正確に言うと先頭ドット有りだと変わらないのと、BinaryFormatterやNewtonsoft.Jsonで非パブリックフィールド含む全フィールドをそっくりそのままストア・ロードさせれば変わらないんだけど

171:デフォルトの名無しさん
24/11/14 09:50:27.66 2GoXPHL10.net
ZipPlaってファイル管理ソフトのソース持ってる人いる?
居たらアップして欲しい

172:デフォルトの名無しさん
24/11/14 10:20:27.81 WaFHXOHg0.net
>>171
ぐぐったらGitHubにForkされたのがあるようだぞ
オリジナルからどの程度手が入ってるか知らんけど

173:デフォルトの名無しさん
24/11/16 02:07:13.59 h+Fv95x40.net
>>172
自分もそれは見つけたんだけど、何を変えてるのかもハッキリしないんですよね
なのでオリジナル持ってる人が居たらと思いまして

174:デフォルトの名無しさん
24/12/07 11:39:26.82 ITlUnsCD0.net
WinFormsってWindowのクラスネーム決められないの?
Win32のFindWindowのClassNameで探させたいのだけど

175:デフォルトの名無しさん (ワッチョイ 3aae-tB/P)
24/12/07 17:24:39.89 8OMGJvUm0.net
protectedなCreateParamsプロパティをオーバーライドしてClassNameを書き換えることはできる
独自名ならとりあえずRegisterClassは必要だけどそれだけで済むかどうかは知らん

176:デフォルトの名無しさん
24/12/08 10:13:10.77 Rw3oOi650.net
C#側のプロパティは書き換えられても実際の内部の値はそういうことしないと無理そうか

177:デフォルトの名無しさん
24/12/08 11:19:30.20 kkfUSfWy0.net
RegisterClassExしてやろうとしたことあるけど
CreateParamsでRegisterしたClassName指定してもエラーになって
それで良く分からんまま放棄したな昔

178:デフォルトの名無しさん
24/12/08 11:24:39.87 I292Dtst0.net
流行りのAIはその辺何か教えてくれんのか?

179:デフォルトの名無しさん
24/12/08 11:42:31.33 gLALr0T30.net
はい

180:デフォルトの名無しさん (ワッチョイ 47d7-InQL)
24/12/08 12:16:51.06 9nkQEnF50.net
人間が垂れ流した知識を混ぜるだけのAIが、人間が知らないことを教えられるわけないだろw

181:デフォルトの名無しさん
24/12/08 12:37:03.03 cRlpRIfuM.net
世界中のどこかで語られたかもしれない事実をそこらの人間がすべて知ってると思うのがおかしい気がする

182:デフォルトの名無しさん
24/12/08 17:47:34.90 d7OE/SEZ0.net
つーかさWin32APIのCreateWindowで作ったウィンドウをC#にAttachする程度基本的な仕組みぐらいあるやろ
あるやろ…

183:デフォルトの名無しさん
24/12/08 21:09:31.34 NIwBIUGx0.net
CSharp初心者が学習始めるなら何からがおすすめ?
多分IIS?使ったウェブアプリになるんだけども
Javaでのアプリ開発経験はあり

184:デフォルトの名無しさん
24/12/08 21:38:41.73 Dh5r1ipA0.net
Paint.netのソースを見たまえ

185:デフォルトの名無しさん (ワッチョイ 5f62-oAsD)
24/12/08 21:46:52.70 NIwBIUGx0.net
これかな、ありがとちょっと見てみるわ
h
URLリンク(github.com)

186:デフォルトの名無しさん
24/12/09 11:14:47.99 uh4vUAM3a.net
SetWindowLong
SetWindowLongEx

187:デフォルトの名無しさん
24/12/09 11:15:02.52 uh4vUAM3a.net
GWL_EX_STYLE

188:デフォルトの名無しさん (ワッチョイ dff4-tB0+)
24/12/09 13:22:41.09 wWCmXoxS0.net
科学 + 5ch

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

コメントに面白いことが書かれている

189:185
24/12/09 17:56:14.64 apYLNmO+0.net
PaintDotNetをインストールした

190:デフォルトの名無しさん
24/12/11 06:17:57.42 BgUz4+cQ0.net
varなんて使うな戦争ってもう終結したの?

191:デフォルトの名無しさん
24/12/11 07:27:33.98 DZxIsQuWr.net
言語によりけりだから

192:デフォルトの名無しさん
24/12/11 08:36:42.20 tumrZkmz0.net
盲目的にvar使うなとは思うけど、一切使うなはないなぁ

193:デフォルトの名無しさん
24/12/11 08:50:12.41 AAqkzyDB0.net
まあマイクロソフトのサンプルにも使ってる例あるしな

194:デフォルトの名無しさん (ラクッペペ MM8f-n9Eh)
24/12/11 10:05:12.70 BwkZDwjMM.net
jsのvarと違ってただの便利機能だしな

195:デフォルトの名無しさん (ワッチョイ 476d-Ahcx)
24/12/11 12:36:15.23 uq+uLBFl0.net
varで参照型を扱うとnullableになるのはどうにかしてほしい

196:デフォルトの名無しさん (ワッチョイ 87ae-pQ4B)
24/12/11 13:56:36.44 pPQiPOka0.net
推論型なんだし、必要に応じて使えばいいんじゃね?
objectならともかく

197:デフォルトの名無しさん (ワッチョイ df6c-Fa9A)
24/12/11 14:39:24.72 1I783KxU0.net
varが絶対必要なのって匿名型使うときだけだから、必要に応じて使う、だとvarはほとんど用無しになっちゃう
戦争に参加するつもりはないが仮にvar使うんなら必要に応じてじゃなく基本varにしないと

198:デフォルトの名無しさん
24/12/11 14:54:27.03 9MAiYNgK0.net
c#は基本varでいいよね
多分大体のc#er?はvarじゃないときにだけ理由を気にするんじゃないかな

199:デフォルトの名無しさん
24/12/11 18:36:49.06 SiVbJLlPM.net
初期に頭のいい人は一番先に varに飛び移った
その後みんな気が付いて移行した
今でも使わないのはご老人

200:デフォルトの名無しさん (ワッチョイ 475a-NyP9)
24/12/11 19:15:48.68 Rq12mde/0.net
varばかりやわ

201:デフォルトの名無しさん
24/12/11 20:38:24.59 pwnGkEKD0.net
VBのVariant最強

202:デフォルトの名無しさん
24/12/11 20:41:39.44 SiVbJLlPM.net
それはないかなw

203:デフォルトの名無しさん
24/12/11 23:21:13.31 uq+uLBFl0.net
インターフェース分離の原則が分からない
「必要のない振る舞いを実装しない」のは適切だと思うんだけど、ポリモーフィズムとの組み合わせが悪いように思う

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)
24/12/12 00:16:45.29 7oNgfo0K0.net
c#スレですよ

205:デフォルトの名無しさん
24/12/12 08:54:59.88 ZQ0BgCqv0.net
そこを別々のインターフェースとして分離するのが間違ってるだでは
飛べる飛べないも”鳥”の一要素でしょ

206:デフォルトの名無しさん
24/12/12 08:59:12.98 cbjQHW3y0.net
プロパティで持てば解決

207:デフォルトの名無しさん (ワッチョイ 476d-Ahcx)
24/12/12 09:20:56.04 m/Fq7DtI0.net
>>206
Nullableな IFrayable? をプロパティとして持たせて、飛ぶ鳥の場合はthisを返すようにするということ?

208:デフォルトの名無しさん
24/12/12 09:43:51.10 ZQ0BgCqv0.net
そこだけのインターフェース化に拘るなって言ってんだよ

209:デフォルトの名無しさん
24/12/12 10:34:43.14 m/Fq7DtI0.net
鳥とペンギンだと近すぎて例えとして微妙だった
例えば「動物のリスト」のようなデータを持ち、動物には鳥のように飛べるクラス (Flyメソッドを持つ) と、トラやライオンのように走るクラス (Runメソッドを持つ) があるといった場合

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

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

そうするとやっぱインターフェース分離の形になりそうで、そうなると利用側で is でキャストするのが落としどころなのかと

210:デフォルトの名無しさん
24/12/12 13:06:06.44 ZQ0BgCqv0.net
鳥以外にも飛ぶ(正確には滑空だが滞空することに変わりはない)動物は居るし
鳥だって地面をRunするヤツは居る
鳥にも、猿程でなくてもその辺に落ちてる物を道具的に使うヤツも居る

お前の例題がそもそもめちゃくちゃなんだよ

211:デフォルトの名無しさん
24/12/12 13:06:59.82 ZQ0BgCqv0.net
あといい加減余所でやれ
C#直接関係ない

212:デフォルトの名無しさん
24/12/12 17:51:32.06 pRQ+cocj0.net
ここの住人はC#を使っていてSOLID原則に悩まされたことなど無いのだろうか

213:デフォルトの名無しさん
24/12/12 18:08:37.64 A8Z2cdQL6.net
>>203
ある動物が飛べることと、鳥であることは独立なんだから、
「飛べる鳥がいる」という情報はなくても仕方なくない?
統計的な相関関係はあるかもしれないが、包含関係でないなら仕方ない。
飛べる他の動物を無視するのなら、IBirdを継承したインタフェースでIFlyableBirdを作ればいいのでは?

214:デフォルトの名無しさん
24/12/12 18:40:52.28 m/Fq7DtI0.net
ISP自体はC#でよく出てくる問題じゃないの?
これなんかまさにそう
URLリンク(dev.to)

だけどこういった解説はISP単体の説明になっていて、泳ぐ、走るといった能力の異なるものを Animal として抽象化する方法を教えてくれない
綺麗な方法でなくても「C#ではこうすることが多い」のようなプラクティスがあれば知りたかったんだけど、そういうのは無さそうなんですかね

215:デフォルトの名無しさん
24/12/12 19:18:32.74 j5Bpxje00.net
実装を伴わない抽象化の話ってなんの身にもならないからやめなさい
それとインターネットサービスプロバイダの話は他所でやってくれ

216:デフォルトの名無しさん
24/12/12 19:18:50.89 F/GYmEjD0.net
求めてそうなプラクティスは見た事ないなぁ
個人的には、飛ぶにしても走るにしても動物という存在の態様のひとつだから
動物IFのプロパティに含めるでいいんじゃないかと思うけどね

217:デフォルトの名無しさん
24/12/12 19:36:28.62 uARXvv9l0.net
var unko = new Unko()

より

Unko unko = new()

の方が良くね?

218:デフォルトの名無しさん
24/12/12 19:46:48.91 j5Bpxje00.net
もっと地球規模の視野で考えろよ
うんこも地球の一部だろ?つまりうんこは地球とも言える
わかるか?

219:デフォルトの名無しさん
24/12/12 19:55:04.36 F/GYmEjD0.net
>>217
まぁ、後者ができるようになったの後になってからだから

220:デフォルトの名無しさん
24/12/12 22:38:48.07 VQmaeBIU0.net
>>214
それISP単体の説明にもなってない
class Penguin : IAnimalにNotImplementedExceptionでFly()を実装すれば即ISP違反だというのは間違い
まずは原典にあたってISPを理解してきたほうがいい
謳われてる原則をどう活用するかはその後

221:デフォルトの名無しさん
24/12/12 22:49:28.08 cbjQHW3y0.net
そもそも
そんな鳥のプログラムなんか一般的じゃねーし

222:デフォルトの名無しさん
24/12/12 22:59:54.30 m/Fq7DtI0.net
>>220
「クライアントが『泳ぐ、飛ぶ、もしくは走る動物』として使うことを想定するのなら、そのインターフェースであるIAnimalにその情報を含めるのは適切」ということですかね
class Penguin としては Fly や Run などのメソッドの実装はノイズに思えるけど、IAnimalとして使われるなら、その契約に従えという感じかな
(それだと後から「道具を使う」がIAnimalに追加された際に Penguine もメソッド追加が必要で、そこがモヤモヤしてる)

こういう場合にアダプタ (ラッパー?) を使うのって適切?
純粋に Penguine としての機能を提供するクラスと、それを IAnimal として使うためのアダプタみたいなの
それだと更に複雑さを増すだけ?

OOP難しい……

223:デフォルトの名無しさん
24/12/12 23:02:07.06 cbjQHW3y0.net
適切とか
とりあえず作ればよくね?

適切かどうかなんてエグゼにしたら関係なくね?

それとも論点だけ考えて実際のプログラム作らないの?

それ何したいの

224:デフォルトの名無しさん
24/12/12 23:31:52.39 RbZTiiBk0.net
例が不適切だから混乱してるだけにしか見えないなぁ

225:デフォルトの名無しさん (ワッチョイ ff70-Ahcx)
24/12/12 23:50:28.74 cAk5An+50.net
SOLIDが現実のコードで使われなかったり、「オブジェクト指向は問題を複雑にするだけ」みたいなことを言われる原因

226:デフォルトの名無しさん (ワッチョイ 6714-oAsD)
24/12/13 01:16:53.76 sFncMVeV0.net
>>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(); // 明示的に飛べる鳥しか扱わない
}

227:デフォルトの名無しさん (ワッチョイ e701-5/pq)
24/12/13 01:54:21.75 aJRVKPMX0.net
こいつら病気なんか

228:デフォルトの名無しさん (ワッチョイ df2b-2fXw)
24/12/13 01:55:37.37 0Vp4NoOf0.net
だね

229:デフォルトの名無しさん
24/12/13 06:18:42.75 ooVm180t0.net
SOLIDにしても所詮理想論であって現場に即してるわけじゃないしなぁ

230:デフォルトの名無しさん
24/12/13 07:39:08.04 WeveN3pQM.net
せやな

231:デフォルトの名無しさん
24/12/13 17:30:15.58 LAtQrsJV0.net
サイコパスの脳の違いを発見。一般の人に比べ線条体が大きいことが判明
karapaia.com/archives/52313287.html

232:デフォルトの名無しさん (スププ Sdff-AHQg)
24/12/13 20:28:57.37 DLDRNjlrd.net
関数型がいいんだね!

233:デフォルトの名無しさん
24/12/14 09:23:37.03 9hmM95L70.net
後から増えた「道具を使う」には何かいい感じにデフォルト実装つけとけば既存のクラスには影響しないんじゃない

234:デフォルトの名無しさん
24/12/14 12:26:32.43 vNNE6Utb0.net
それを派生というのでは?

235:デフォルトの名無しさん
24/12/14 12:52:03.62 /3oGIJ400.net
C# 8 からはインターフェースのデフォルト実装が使える

236:デフォルトの名無しさん
24/12/14 14:27:07.29 TQJHLK8K0.net
Win10や11のOS付属のpowershell5.1でインラインで書けるC#ってバージョンちょっと古くね
できれば新しいRoslynのC#をpowershellから使いたいのだが
なんか昔の記事しか見つからん

237:デフォルトの名無しさん
24/12/14 15:05:36.28 uE892PPx0.net
どうせ別に入れる必要があるならPowerShell 7入れれば良くね

238:デフォルトの名無しさん
24/12/14 16:09:38.02 SXm2TFHi0.net
>>236
起動時に出て来るメッセージすら読めないのか

239:デフォルトの名無しさん
24/12/15 03:52:31.32 c6iml+qS0.net
>>238
お前はこれでも読んどけ
URLリンク(learn.microsoft.com)
Roslyn単体で使うだけならビルドツール拾ってくるだけだが
Powershell上げるとなると仕様も大幅に変わってたりして無理だし俺が出した要件の解にもなってない

240:デフォルトの名無しさん
24/12/15 04:43:36.26 OuaeEhke0.net
>>239
馬鹿が必死に調べただけの浅い知識で言い訳してる

241:デフォルトの名無しさん
24/12/15 09:22:53.93 6s9C3wLNM.net
今のところ互換性の為に残してあるんだろう
それを変えちゃうと問題が起こる可能性があるしMS側のメンテがめんどうなので
変えたい人は7とセットで入れろということなんだろう

242:デフォルトの名無しさん
24/12/15 13:32:12.27 1H80RXIX0.net
>>239
バカの相手はしなくていいわ
その情報はありがたいが

243:デフォルトの名無しさん
24/12/16 00:02:44.03 jraeIOUM0.net
PowerShellは完全に袋小路だからもう諦めた方がいい
6以降は事実上Azure専用

244:デフォルトの名無しさん (ワッチョイ db8e-Dyog)
24/12/16 03:32:32.19 B9vFRMjT0.net
>>242
うわっ
自分の言い訳コメントに自作自演で恥ずかしい馬鹿発見

245:デフォルトの名無しさん
24/12/16 04:36:14.08 M2IkaScH0.net
なんで作っては捨ててくスタイルなんかなMicrosoftは

246:デフォルトの名無しさん
24/12/16 06:57:26.47 xj9X4IbW0.net
作ってないやろ
買収してるだけ

247:デフォルトの名無しさん
24/12/16 08:17:45.85 d6I1DTY60.net
PSはMSが作ってるが

248:デフォルトの名無しさん
24/12/16 09:42:40.38 WomMb93i0.net
Windowsに標準搭載されてる.NET Frameworkと今の.NETの時点で互換性ないのに
なんで.NETアプリであるPowerShellが叩かれるのか

249:デフォルトの名無しさん
24/12/16 12:31:10.08 zYOmJNRT0.net
標準搭載されてるPowerShellは.NETアプリじゃなくて.NET Frameworkアプリだからね

250:デフォルトの名無しさん (ワッチョイ 2344-/DxF)
24/12/16 13:18:44.44 ZxGHnTET0.net
>>245
MSの社内政治に敗れたチームのプロダクトはそうなりがち
社内政治うまくやってると微妙なやつも長生きする

251:デフォルトの名無しさん (スププ Sd8a-omYb)
24/12/16 13:27:42.05 HTBCdLEid.net
frameworkってなんでまだ存在するの?

252:デフォルトの名無しさん
24/12/16 15:54:22.92 d6I1DTY60.net
.NETがFrameworkと互換性無くて捨てられないから

253:デフォルトの名無しさん
24/12/16 19:05:15.35 HTBCdLEid.net
互換性ないってことは、.NETとframeworkの2つのアプリを動かしたら、GCもそれぞれで動き始めるの?

254:デフォルトの名無しさん
24/12/16 21:44:01.92 dTKITl7UM.net
>>253
GCはアプリ(プロセス)毎じゃないの

255:デフォルトの名無しさん
24/12/19 20:41:55.41 KU+lpcLj0.net
PowerShellはWindowsにシステムワイドにインストールされた .NET Framework が存在するという前提で成立していたのに、
.NETでは.NET自体をアプリにバンドルするか、必要に応じて特定のバージョンを追加で入れるかになって完全に破綻しちゃったんだよね
一般的な.NETアプリならバンドルは可搬性が向上するから好ましいことだけど、
PowerShellの場合はシステムワイドにインストールされたいろんなモジュールと連携しなきゃいけないから.NETバンドルはありえない
完全に詰んでる

256:デフォルトの名無しさん
24/12/20 08:54:32.70 6dsqio680.net
だからPowerShell Coreは標準装備じゃなくて追加装備

257:デフォルトの名無しさん
24/12/20 10:14:37.03 PANCPXf30.net
Windowsにそもそも入ってないなら追加インストールでいいんだけどね。問題は5が入っていること。
それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、
そもそもPS書いて飯食ってるタイプのエンジニアでは最新に拘る人はそもそも少ないだろうね

258:デフォルトの名無しさん
24/12/20 13:01:10.12 9RxE8mFw0.net
はいそろそろC#の話題でよろ

259:デフォルトの名無しさん
24/12/20 15:29:33.49 raronLtC0.net
JAIST、「並行量子通信プロトコル」の完全な自動形式検証を実現
URLリンク(news.mynavi.jp)

260:デフォルトの名無しさん
24/12/20 17:50:29.82 0SGDMmeR0.net
>>258
なんかある?

261:デフォルトの名無しさん (ワッチョイ 6a79-qWVo)
24/12/20 20:02:54.65 7538eGNC0.net
またペンギンやら飛べない鳥だとかの話がしたいのかい?
それともPowshellの付属物の話がしたいのかい?
どっちなんだい?

262:デフォルトの名無しさん
24/12/21 10:56:38.14 bIHzWCsda.net
>>257
>それによって「なぜ元々入っているのにわざわざ追加するのか」という当然の疑問を解消するコストが生じる。
>開発者の好みだけでサポート期間も互換性も劣るゲテモノをゴリ押しするのは極めて困難だし、

ほんそれ
5が全部入りにしておくのが正解だっただろうな

263:デフォルトの名無しさん
24/12/21 11:18:40.67 gj7hxYFQM.net
PS for sysetmみたいなのを最小セットで入れておけば良かった

264:デフォルトの名無しさん
24/12/21 11:42:21.51 4NNdAFL10.net
終わらないPS談義

265:デフォルトの名無しさん
24/12/21 17:53:08.76 BdmznDtW0.net
>>264
お前がC#の話題振ってくれりゃ乗るよ
早くしろよ

266:デフォルトの名無しさん (ワッチョイ be10-Xxs2)
24/12/21 18:15:03.35 4NNdAFL10.net
いや知らんがw
俺がC#の話題にしろ言うたわけじゃないしw

267:デフォルトの名無しさん
24/12/21 21:57:55.88 i5j/m89y0.net
今関わってるプロジェクトがスペース2つでインデントしててちょっと面食らってしまったんだけどこれ珍しくないもの?
今まで携わってきた中で一件も遭遇したことなかった

268:デフォルトの名無しさん
24/12/21 22:11:41.26 lUhayCnC0.net
過去に深いネストを大量生産する人がエラくなっちゃって、そういうルールになってしまったんじゃないかと妄想しちゃうなw

269:デフォルトの名無しさん
24/12/21 23:25:41.77 BdmznDtW0.net
今時スペース2個は珍しいな、C#とかではあんまりない気がする
昔々はどの言語でもタブを使っていいかとか、スペースで代用するなら2個か4個かで論争があったらしい
JSは2個が主流だった気がするけど今はどうだろ

270:デフォルトの名無しさん
24/12/21 23:39:03.76 L6mtJxlH0.net
jsonは2だったり4だったりまちまちだけどね

271:デフォルトの名無しさん
24/12/22 00:09:01.63 tw4BvM7X0.net
タブのが合理的
Goみたいな標準フォーマッタがあるのが理想だけどC#はそう言う文化はないね

272:デフォルトの名無しさん (ワッチョイ df79-0Q8V)
24/12/22 02:26:26.71 /fc7feyD0.net
俺はスペース2個のが視線移動減って楽だと感じてるからかなり昔から2個派だよ
>>268みたいな日本人特有の右倣えのお仕着せルールに甘んず昔から超効率化してるやつらは世の中に沢山いるんだよ
勉強になったな

273:デフォルトの名無しさん
24/12/22 03:54:49.07 f4R4W69d0.net
TABに統一してるけど
表示上は半角スペース2から4個で用途で変えてる

274:デフォルトの名無しさん
24/12/22 05:02:43.67 SvMpALOcd.net
{}は
if(){
}
の方が好き
普通は
if()
{
}
これ?

275:デフォルトの名無しさん
24/12/22 05:44:22.67 96LlHbpn0.net
逆、最初の頃は上が大多数
ブログやら初心者講座やらで下の書き方が主流担ってきてる感じ

276:デフォルトの名無しさん
24/12/22 06:21:31.74 I7bhR46i0.net
スペース2個インデントって言うと、XMLやHTMLを思い浮かべるな

277:デフォルトの名無しさん
24/12/22 07:48:19.66 dFQQq0VB0.net
>>275
違うぞ
上のはJavaやJavaScript界隈でのデファクト

下はMicrosoft系のC#とかのデファクト

公式が出してるコーディング規約がそうなってるだけ

278:デフォルトの名無しさん
24/12/22 07:50:46.11 dFQQq0VB0.net
>>276
例えばC#というかasp.net系だとrazor構文でhtmlと一緒にC#のコード埋め込む
そうするとインデントは2の方が見やすい

279:デフォルトの名無しさん
24/12/22 07:53:26.28 dFQQq0VB0.net
>>271
C#はチェーンメソッドのドットを縦に綺麗に並べる文化が有るんでタブだと都合が悪い
2でも4でも良いけどスペースがデファクト

280:デフォルトの名無しさん
24/12/22 08:13:40.94 96LlHbpn0.net
>>277
いやだから
C#が出る前というか出始めの頃で
Cプラプラ使い達が多かった時さ

281:デフォルトの名無しさん
24/12/22 08:20:56.74 96LlHbpn0.net
当時、というか関数書くときって
hoge(){
…}

て書くのが一般的やったん

んでDelphiが出てきたらこの{}をBegin…Endで囲むから
hoge()
Begin

End

ここらへんはVBやVBAとかにも反映されて
その後C#で出した際にって感じかな

282:デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
24/12/22 09:15:42.08 tw4BvM7X0.net
>>279
タブをインデントで使ってスペースをアライメントで使えば理論上ズレないよ
Goのフォーマッタはこれに従ってるからタブ幅は任意に設定できる

prettierみたいな途中で強制的に折り返すフォーマッタとは相性が悪いけど

283:デフォルトの名無しさん (ワッチョイ 5f95-EHcm)
24/12/22 09:22:40.24 tw4BvM7X0.net
Indent with tabs, align with spaces

URLリンク(dmitryfrank.com)

これね
これが理想だけどエンジニアのレベルが高くないとこのルールを守るのは難しいからスペースにしてるのが大半
ただしGoは強制フォーマッタでこれを解決してる

個人プロジェクトなら最初から好きなタブ幅にすればいいからタブにするメリットもあまりないし
気分でタブ幅変えれるのは結構メリットあるけどね

284:デフォルトの名無しさん (ワッチョイ b310-3P54)
24/12/22 09:27:48.67 I7bhR46i0.net
俺はずっと>>274の前者でインデントはタブだなぁ
なおタブの幅はスペース4個分

285:デフォルトの名無しさん
24/12/22 11:59:15.10 US35TJKc0.net
「自転車置き場の屋根の色」現象発生中

286:デフォルトの名無しさん (スッップ Sdaf-3P54)
24/12/22 13:03:56.05 ci/BAnbad.net
この手の話は職場のルールで決まるから個人がどうこうは関係ないよな
ただ自分のツールなんかは好きにしろだが
カッコ、演算子、型と変数の宣言の間の空白などもめる話題はいくらでもある

287:デフォルトの名無しさん
24/12/22 16:36:51.22 J7cuP3Nu0.net
>>285
「原子力発電所の建設」について議論したいなら付き合うよ、それで議題は?

288:デフォルトの名無しさん
24/12/22 17:09:33.96 dFQQq0VB0.net
まあreshaperでテーム共有設定使うだけだしな

289:デフォルトの名無しさん
24/12/22 19:48:07.14 US35TJKc0.net
>>287
では失礼して
Unity製ゲームのMOD開発なんかでリフレクション使いまくるのもなんかスマートじゃないから、
aelij氏のIgnoresAccessChecksToGeneratorを魔改造させてもらってフィールド含めて全パブリック&readonly解除でゲームのコードに全アクセス出来るようになってめっちゃ捗るようになったのだけど、
欲が出て標準ライブラリにも手を出したくなってやってみたらmscorlibなんかはReferenceAssemblyだからプライベートフィールドはそもそもdll内に含まれてないから書き換えられないんだよね。
ランタイム時の実体dllを決め打って渡せばstring.m_firstCharとかList<T>._sizeとかも全てアクセスできるようにはなるんだけど決め打ち渡しもスマートじゃないからどうにか自動で解決をしたい。
ILSpyやmono.cecilにはランタイム時の実体dllを特定するコードあるんだけどbuildアクションから同じ事するのって可能だろうか?

290:デフォルトの名無しさん (ワッチョイ e376-ZNoy)
24/12/22 19:55:36.15 zKZ5mRgv0.net
はい

291:デフォルトの名無しさん (ワッチョイ 7b8b-vY+B)
24/12/22 20:10:00.61 US35TJKc0.net
へー
なんだかもうゲームよりMOD開発、MOD開発より開発環境開発の方が長くなっちゃってますわ

292:デフォルトの名無しさん
24/12/22 20:35:36.44 96LlHbpn0.net
だって、ここ
別にゲーム開発やないし

プログラムやで

293:デフォルトの名無しさん
24/12/22 20:50:51.80 F7NwxYJ7M.net
いまだにmonoで簡単にいじられまくりゲームあるのか

294:デフォルトの名無しさん
24/12/23 00:10:04.98 XKMn6iMr0.net
>>289
日本語がややこしいけど
①標準ライブラリのPrivate含む全フィールドにリフレクションを使わずにアクセスして書き換えたりしたい
んで、
②実体DLLを決め打ちで渡せばアクセスできるってところまでできてる
あとは
③実体DLL取得を自動化したい
④なおかつビルドプロセスに組み込みたい
ってことか
MOD開発とか知らんけど面白そうじゃん

295:デフォルトの名無しさん
24/12/23 00:36:21.82 XKMn6iMr0.net
いまいち細かい要件がよくわからんけどAppDomain.CurrentDomain.GetAssemblies()で現在ロードされているすべてのアセンブリが取得できるらしいが、これ試した?
駄目だったならどういうところがダメだったのか教えてくれ

296:デフォルトの名無しさん
24/12/23 17:33:16.62 HWay8A+S0.net
>>295
要するにIgnoresAccessChecksToGeneratorの話でMSBuild内のコードとして動くものだからそれやってもMSBuildがロードしてるものが返されるだけとなる
ILSpyなんかもtypeof(object)などから解決してるので上記の理屈でそのまま移植はできない

297:デフォルトの名無しさん
24/12/23 17:42:25.10 HWay8A+S0.net
>>293
マルチメインじゃなくmodフレンドリーなゲームならil2cpp化せずそのまま出してるゲームも普通に多いよ
改変やチート防止のためなら難読化含めてやったところでそこまで難易度上がらないからそれ目的ならRustみたいにカーネルドライバ付けるしかない

298:デフォルトの名無しさん
24/12/24 18:58:01.04 9YLK2p020.net
個人開発の局所的な用途のマイナーツールの話が原発の建設並の重大事なのか
ちょっと難しすぎてわかんねえな

299:デフォルトの名無しさん
24/12/24 19:41:54.52 RgkKZ0Pj0.net
原発ってただの湯沸かし器じゃん
燃料がちょっとヤバイってだけで高尚なC#のプログラムと比較すんなよ

300:デフォルトの名無しさん
24/12/25 08:00:53.24 vP0zyznod.net
C#だってただの道具
しかもC#だけじゃお湯も沸かせない
高尚とかちゃんちゃらおかしい

301:デフォルトの名無しさん
24/12/25 08:26:32.01 ML8x6ihA0.net
ツールは手段であって目的はアクセシビリティバイパスだから言語レベルのスケールの話な
実際これ求めてる人は少なくないからUnsafeAccessorが実装された訳で
てかリフレクションの方が文字列で指定してる分よっぽど危険だと思うんだけどな

302:デフォルトの名無しさん
24/12/25 21:07:50.83 G9TljzDw0.net
エロがビデオを進化させてきようにチートがソフトウェアを進化させるんだよ
湯沸かししかできない原発野郎は難しいなら黙ってろ

303:デフォルトの名無しさん
24/12/25 21:35:48.64 7oEpQVAc0.net
煽りたいだけのやつが居着いちゃってるのか、このスレ

304:デフォルトの名無しさん
24/12/25 21:39:40.34 WXVFxdaX0.net
いつものことだよあぼーんしときな

305:デフォルトの名無しさん
24/12/25 21:44:21.01 WWJbrOfz0.net
だぁ~から
ドーンおじはコテ付けろや

306:デフォルトの名無しさん
25/01/01 16:01:04.94 nGCOTvnw0.net
Enum.IsDefined(enumType, intValue)ってボックス化する?

AIに聞いたら最初は「ボックス化しない」とか言われたんだけど、第2引数がobject型として受け取ることを指摘したら「ボックス化するかもしれません」みたいな曖昧な返答されてよく分からなくなってきた

307:デフォルトの名無しさん
25/01/01 16:03:34.19 zfs+VkVC0.net
object型ならするよ
.NETのバージョンにもよるけどgeneric版の方が型がコンパイル時解決されるからパフォーマンスは良い

308:デフォルトの名無しさん
25/01/01 16:07:11.80 nGCOTvnw0.net
だよね ありがとう

309:デフォルトの名無しさん
25/01/01 16:23:43.79 nGCOTvnw0.net
確かにジェネリクスでstruct制約付けたらボックス化回避できそう
ありがとう

public TEnum ConvertToEnum<TStruct, TEnum>(TStruct value)
where TStruct : struct
where TEnum : Enum
{
if (!Enum.IsDefined(typeof(TEnum), value))
throw new ArgumentException();

return Unsafe.As<TStruct, TEnum>(ref value);
}

310:デフォルトの名無しさん
25/01/01 22:57:38.89 tBHA6FMH0.net
JetbrainsやILSpyでIL見てboxあるかどうかみればいいんじゃね

311:デフォルトの名無しさん
25/01/31 11:32:40.83 jXb+sjQI0.net
ハック的なことなんだけどインスタンスのオブジェクトヘッダに埋め込まれるクラスハンドルへのポインタ?をインスタンス無しで得る方法って無いかな
typeof(MyClass)ってすると正にそのポインタが「mov rcx, 7FFB716DE758 -> call clrのtype取得関数」って感じのアセンブラが生成される訳だけど、その7FFB716DE758を得たいんだよね
インスタンスがあればUnsafeライブラリ用いて簡単に得られるのだけど

312:デフォルトの名無しさん
25/01/31 11:34:05.08 jXb+sjQI0.net
文章修正してたら日本語おかしくなったけどもし知ってる方いたらヒントでも何でも教えていただきたい

313:デフォルトの名無しさん
25/01/31 12:00:57.31 ejyfLYzx0.net
GetTypeで得られるものとは違うわけ?

314:デフォルトの名無しさん
25/01/31 12:51:25.22 jXb+sjQI0.net
>>313
GetTypeやtypeofで得られるものはあくまでもType型のマネージドインスタンスだから全く違う
だけど逆アセをするとtypeof()時には即値でハンドルへのポインタ?がアセンブラコードとして埋め込まれてるので内部的にはめちゃくちゃ簡単に得る方法があるはずなんだよね

315:デフォルトの名無しさん
25/01/31 14:52:24.28 jXb+sjQI0.net
一応自己解決だけどGetTypeやtypeofで得られたTypeインスタンスから「type.TypeHandle.Value」で希望のものは得られた
本来即値で得られるはずなのに冗長でもやもやはするが

316:デフォルトの名無しさん
25/01/31 15:09:15.71 gpRv5mHv0.net
ChatGPTに聞いたら同じ答えが返ってきたけどRuntimeTypeHandle.Valueは環境によってメソッドテーブルへのポインタじゃなくEETypeへのポインタや実装依存のメタデータへのポインタになる場合もあるから自分で確認しろよとのこと

317:デフォルトの名無しさん
25/02/01 06:49:44.36 LNgv56j/0.net
そらJITなんだから・・・

318:デフォルトの名無しさん
25/02/01 10:13:37.11 m26c//aC0.net
いやJITは関係ないぞ

319:デフォルトの名無しさん (ワッチョイ 9a8b-IJXt)
25/02/01 11:06:41.29 dQW8A9nv0.net
JITだろうが何だろうがconst intなんかは即値で埋め込まれるしね
だからクラス名.TypeHandleValueみたいなconst持っててくれたら嬉しいんだけど需要ほぼゼロすぎるか

320:デフォルトの名無しさん (ワッチョイ 1a9d-natb)
25/02/01 12:12:47.05 m26c//aC0.net
ん?即値で得られない理由の話だったか
そっちならJIT関係あるわな

321:デフォルトの名無しさん (ワッチョイ 9a8b-IJXt)
25/02/01 12:17:46.65 dQW8A9nv0.net
いや関係ないよ
なぜなら逆アセすれば分かるけど思いっきりレジスタ長以下のconst同様の挙動を見せてるからね
typeof時にね

322:デフォルトの名無しさん
25/02/01 12:48:59.04 MtSj47O+0.net
逆アセw

323:デフォルトの名無しさん
25/02/01 12:53:04.51 LNgv56j/0.net
アドレスとかプロセス起動のたびに変わることは無いんだっけ?

324:デフォルトの名無しさん
25/02/01 12:59:03.20 dQW8A9nv0.net
>>323
.NETの場合は当然変わるしネイティブでも設定次第では変わり得る
でもそもそもC#やJavaは実行時にその都度機械語を組み立てて行く訳だから、であればその都度埋め込めばいいだけの話

325:デフォルトの名無しさん
25/02/01 13:11:42.17 LNgv56j/0.net
なら結局、ユーザークラスじゃ都度変わりうるってことじゃ?

326:デフォルトの名無しさん
25/02/01 15:14:32.83 XDtywhx90.net
>>321
それはJITやAOT後のものを見てるからでしょ
JIT/AOT時に異なる相対アドレスに配置できる余地を残すためにC#/ILの段階では固定しない

327:デフォルトの名無しさん
25/02/02 01:00:15.78 U03i5Xdj0.net
ILの段階で定数になるなら決め撃ちで問題ないだろ

328:デフォルトの名無しさん (ワッチョイ 7f10-cJwu)
25/02/02 06:57:31.12 VLFyjNJe0.net
ユーザークラスがILの段階で決め打ちになるわけないだろ

329:デフォルトの名無しさん
25/02/02 10:55:04.54 NGhOMzti0.net
ユーザークラスだろうが何だろうが別に関係ないし
IL段階で定数になる必要もなくて事実として実行時に機械語になるタイミングで定数化されるんだよ
プログラマがその定数にアクセスする手段がないだけで

330:デフォルトの名無しさん
25/02/02 11:18:20.90 RNSPFW0b0.net
実行時にならんと決まらんものは定数じゃねぇ

331:デフォルトの名無しさん
25/02/02 12:43:09.18 NGhOMzti0.net
定数ってか再三言ってるけど即値だな

332:デフォルトの名無しさん
25/02/03 22:15:38.62 EtXs2rHFM.net
インスタンスの型の厳密なチェック typeof (X) == x.GetType() やジェネリック型のチェック typeof (T) == typeof (X) はJITで最適化されるから、
質問者のケースがもしこれらに該当するなら変なハックは必要ない

333:デフォルトの名無しさん
25/04/14 17:39:25.74 XKwEHxpo0.net
Task<T>を返す非同期メソッドをUIスレッドで呼び出して結果を取得したいのですがどうすればいいのでしょうか?
ConfigureAwait(false)の後やTask.Runでスレッドプール上?で実行されてる
コード内からメソッドをUIスレッドで呼んで結果を取得したいのです

334:デフォルトの名無しさん
25/04/16 05:53:28.46 HaWtxdw70.net
イマイチ質問が把握できないがこういうことか?
UIスレッドでTaskScheduler.FromCurrentSynchronizationContext();してTaskSchedulerを確保しておく
UIスレッドで実行したいメソッドは上記TaskSchedulerを使ってStartするTaskとして実行する

public Form1()
{
  this.Button1.Click += ExecuteAsync;
}
async void ExecuteAsync(object? sender, EventArgs e)
{
  var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
  await Task.Run(async () => {
    using var logger = new Logger("Task");
    var task = Task.Factory.StartNew<Task>(() => SetTextAsync(), CancellationToken.None, CreationOptions.None, scheduler);
    await task;
    await task.Result;
  });
}
async Task SetTextAsync() {
  await Task.Delay(1000);
  this.Text = DateTime.Now.ToString("HH:mm:ss");
}

335:デフォルトの名無しさん
25/04/16 05:58:12.67 HaWtxdw70.net
あ、TaskCreationOptionsのTaskが抜けてる…
async Task SetTextAsync()の代わりにasync Task<string> GetTextAsync()だったら
StartNew<Task<string>>にしてvar text = await task.Resultすればいい

336:デフォルトの名無しさん
25/04/16 07:31:16.54 QZV5gxIh0.net
ああ、ありがとうごいます
それっぽいです
要はスレッドプールなどで実行されてるメソッドから
途中でダイアログなどを出してユーザのアクションの結果で更に処理を
進めるかキャンセルするかを決定したかったにです

同期コンテキストは調べたのですがこのPostなんたらじゃできないなと..
TaskSchedulerの方から攻めるのですね

ありがとうございます

337:デフォルトの名無しさん
25/04/16 07:41:21.34 QZV5gxIh0.net
ボタンなど押して非同期メソッドを呼び出す
この時、非同期メソッドには介入が必要な時に呼び出される非同期コールバックを渡せるようにする

呼び出し側で、非同期コールバックとして
ダイアログなどをだしたりする
ダイアログの表示などはUIスレッド実行したかった

こんな感じでした

338:デフォルトの名無しさん
25/04/16 15:31:47.59 yzNZC+ym0.net
BOOL TestFunc(DWORD dwType, LPBYTE pBuffer, LPDWORD pcbBufSize);
dwType:欲しいデータのタイプコード
pBuffer:要求したデータを入れるバッファへのポインタ
pcbBufSize:pBufferが指すバッファのサイズ

例えば↑のような関数をエクスポートしてるアンマネージDLLがあって
DllImportする時のプロトタイプ宣言ってどう書いたらいいんでしょ?

339:デフォルトの名無しさん
25/04/16 15:33:52.84 yzNZC+ym0.net
LPDWORDはref uintでいいのかなと思うけど
LPBYTEとか、それこそLPVOIDだのハンドル系受け取る引数なんかはどう宣言したものかよく解らなくて

340:デフォルトの名無しさん
25/04/16 19:05:55.86 HaWtxdw70.net
典型的にはこう
bool TestFunc(uint dwType, byte[] pBuffer, out uint pcbBufSize);
ref/outで宣言すると使いやすいけどNULLを渡せなくなるってのが問題になったりすることもある
ケースバイケースなので一概には言えない
ポインタが絡むなら誰がメモリ確保して誰がどうやって解放するのかを把握してないといけない場合もある

341:デフォルトの名無しさん
25/04/16 19:58:01.06 VD2CYluqM.net
第三引数は普通はoutじゃないきがするけど

342:デフォルトの名無しさん
25/04/16 20:27:15.14 qW3EbLcWM.net
outだと呼び出し元からバッファサイズを渡せないな

343:デフォルトの名無しさん
25/04/16 20:47:35.76 JiAmFx7+0.net
refじゃあかんの?

344:デフォルトの名無しさん
25/04/16 20:48:46.57 yzNZC+ym0.net
>>340
おぉ、ありがとう
ちょっとそれ元に弄ってみるます

345:デフォルトの名無しさん
25/04/20 10:42:31.48 T4EZ0xEH0.net
refとかout使うと機械語的にはゴミラッパーが生成される
ついでにboolも実はネイティブ型ではないので同様にゴミが生成される
多少可読性や安全性を犠牲にして良いなら
int TestFunc(uint dwType, byte* pBuffer, uint* pcbBufSize)とすればC/C++と遜色ない機械語になる
戻り値はintなので != 0としてbool判定をする手間がかかるけどね

ついでに.NETCore系統で且つ内部でIOなどを行わずに計算量が少なく割とすぐ戻る事が確定している場合は[DllImport("native.dll"), SuppressGCTransition]とすると尚良し

346:デフォルトの名無しさん
25/04/20 10:47:34.35 T4EZ0xEH0.net
もしネイティブ側の戻り値がBOOLではなくboolならC#側はbyteにすればいい
boolって実は結構罠だからな

347:デフォルトの名無しさん
25/04/21 11:37:03.90 ed9AfVbw0.net
CharGPTの回答

WinAPI型名  意味              C# 対応型                 備考・使い方例
BYTE     8ビット符号なし整数       byte                    0〜255
WORD     16ビット符号なし整数      ushort                   0〜65535
DWORD     32ビット符号なし整数      uint                    よく使われる
LONG     32ビット符号付き整数      int                    一部APIでは戻り値で使用
ULONG     32ビット符号なし整数      uint                    DWORDと同義扱いされることあり
BOOL     論理値(実際はint型)      bool または int              C#では [MarshalAs(UnmanagedType.Bool)] を使うと便利
LPSTR     ANSI文字列へのポインタ     string (MarshalAs(UnmanagedType.LPStr))
LPCWSTR    Unicode文字列定数へのポインタ  string (MarshalAs(UnmanagedType.LPWStr)) 通常はこれを使う
LPBYTE    BYTEへのポインタ        IntPtr / byte[] / byte*          C#で配列やポインタとして使う
LPDWORD    DWORDへのポインタ        ref uint / out uint / IntPtr        APIによって使い分け
HANDLE    汎用ハンドル          IntPtr                   ハンドルは全部 IntPtr
PVOID/LPVOID 任意のポインタ         IntPtr                   Voidポインタの表現
CHAR     1バイト文字           byte(ANSI)/ char(Unicode)       ANSI文字列なら byte
TCHAR     Unicode/ANSI切り替え可能文字型 char または string             Unicode前提なら char/string

348:デフォルトの名無しさん
25/04/21 14:43:06.51 AUqiwuPT0.net
何のためのVOIDポインタかで変わるしIntPtrで良いもんでもないわ
まぁなんだ、CharGPTなんて言うアホは黙っとけw

349:デフォルトの名無しさん
25/04/22 19:34:21.37 rMo0RJWh0.net
Copilot「僕の出番ですね!」

350:デフォルトの名無しさん
25/04/23 08:49:37.84 eLYGqJZZ0.net
去ね

351:デフォルトの名無しさん
25/04/23 12:17:26.63 snQ3Sxp8d.net
wchar : 「神は我を見放したのか」

352:デフォルトの名無しさん
25/04/23 20:01:13.83 WPvg2tW3M.net
>>347
ChatGPTはc#弱いな

353:
25/04/24 01:47:59.03 MPcZRdS90.net
>>345
最近のC#はMIL(IL?)でなくマシン語を直接()生成するようになったのですか

354:デフォルトの名無しさん
25/04/24 21:13:01.92 985jarF60.net
>>353
最近は native AOT といってそういうことができる
リフレクションが使えないなど制限もあるけど

元のレス先の345は、たぶん native AOT とか関係なく、中間言語が生成するコードも指して機械語と言ってると思う

355:
25/04/24 21:27:22.97 WNuC4TAo0.net
>>354
なるほど、ありがとうございました!!

356:デフォルトの名無しさん
25/04/25 11:23:25.63 reKQm/Xa0.net
>>354
ILの話はしてない
nativeAOT及びJITが最終的に生成するアセンブラを指して言ってる
パフォーマンス目的でC/C++と連携しようとすると返ってパフォーマンス落ちる事も多いからな
機械生成のゴミラッパーが挟まると呼び出しコストがdll内部のルーチンより1万倍掛かるとかザラにあるし

357:デフォルトの名無しさん
25/04/25 12:53:18.17 RL99gkZ90.net
まぁ、アンマネージ呼び出しをパフォーマンス目的でやるもんじゃないしな

358:デフォルトの名無しさん
25/04/27 16:38:33.85 jnYDAPp70.net
LibraryImport属性を使うとDllImport属性より最適化されたコードが出力されたりするの?

359:デフォルトの名無しさん
25/05/03 12:39:00.86 GwMmJ/YG0.net
オリジナルのDataGridViewの列を作りたいんですが、デザインビューのDataGridViewからオリジナルの列を追加する方法ってありますか?

360:デフォルトの名無しさん
25/05/03 14:19:24.20 ZbkD0HOB0.net
>>359
オーナードローしたいという事?

361:デフォルトの名無しさん
25/05/03 14:43:58.59 rfaECn6+M.net
列A 列Bがあって 列C作ってA+Bを表示したいと言うことでは?

362:デフォルトの名無しさん (ワッチョイ 7761-tU9d)
25/05/03 15:51:35.38 GwMmJ/YG0.net
DataGridViewColumnを派生させたオリジナルの列をフォームデザインビューから列に追加したいんです

363:デフォルトの名無しさん
25/05/03 16:55:23.30 h9Jrb8E+0.net
lこの辺りを駆使してDataGridViewColumnクラスを作るとか
URLリンク(dobon.net)

364:デフォルトの名無しさん
25/05/03 18:56:11.65 Q4RX0Sa/0.net
スマホとPCの作業を効率化したい--「Copilot Vision」の便利な8つの活用例
2025-05-03 07:00
URLリンク(japan.zdnet.com)


1 プログらまーまこれを改造してるので上記以外の状態でも使用できるようにしている

2 すでにプログラムがあるので1~コードを作成する必要が無い

ボイス・トォ・スカルの本態が一般パソコンにまで来たのでつい買い捨てができるようになった
マネーロンダリング 談合 インサイダー などがはかどるといわれる

365:デフォルトの名無しさん
25/05/05 08:51:14.85 wERx/Nt90.net
“イリヤ神”がまたやった 動画生成AI「FramePack」が革命的なワケ
2025年05月05日 07時00分更新
URLリンク(ascii.jp)
 4月17日に登場した動画生成AIプログラム「FramePack(フレームパック)」が世界的に衝撃を与えています。PCローカル環境で動画AIを動かすには、少なくともビデオメモリー(VRAM)が12GBあるビデオカードを搭載していないと難しいというのが常識でした。ところが、VRAM 6GBでも安定的に動作させられるため、一気に動画AIの裾野を広げそうです。開発したのは、画像生成AI分野で「ControlNet」や、使いやすいツール「Fooocus」などを開発してきたことで知られる、スタンフォード大学に在籍中のIllyasviel(イリヤスフィール、以下イリヤ)さん。既存の方法論にまったく違ったアプローチでブレイクスルーを引き起こす、“イリヤ神”のアプローチに再び注目が集まっています。
中略
 AI動画を作ってみたいけれども、スペックが足りないために諦めていたという人が次々に自前の環境で試すようになってきました。既にワンパッケージでインストールできる環境も整えられているため、スタートも簡単です。様々なファイルをダウンロードしてくるため、初期設定は2時間くらいは見ておく必要があるものの、圧倒的にハードルが下がりました。

366:デフォルトの名無しさん
25/05/07 15:21:51.01 Nuqzm3Wk0.net
下記は全て2025年5月7日の記事

OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
URLリンク(news.mynavi.jp)

Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
URLリンク(news.mynavi.jp)

スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
URLリンク(karapaia.com)

367:デフォルトの名無しさん
25/05/07 16:08:58.47 9Z9/upda0.net
余所でやれカス

368:デフォルトの名無しさん
25/05/08 10:26:27.15 8ptxnmrna.net
余所でやれとあなたが言ったから
色んなスレにマルチされたので
5月7日はマルチ記念日

369:デフォルトの名無しさん
25/06/16 03:18:14.57 BRbK5XdC0.net
IDisposableを実装したクラスのインスタンスがもし破棄されていたら再度生成するために、

if(instance.IsDisposed || instance == null){
instance = new MyClass();
}

という書き方してるんですが、(obj != null)の部分って意味ないんでしょうか?

370:369
25/06/16 03:32:02.55 BRbK5XdC0.net
すみません。ChatGPTが下記の回答をくれました。

instance が null の場合、insntace.IsDiposed の評価時に NullReferenceException が発生してしまうので、

if(instance == null || instance.IsDisposed){
instance = new MyClass();
}

にしなければならない。

必要かどうか。
 設計上 instance が null になる可能性がある場合、null チェックは必要。
 絶対に null にならないように管理されている場合、null チェックは不要。

 「instance がまだ生成されていない、または使えない状態になったときに再生成する。」
 という目的が明確にある場合、妥当で意味のある書き方です。

371:デフォルトの名無しさん
25/06/16 10:34:42.11 Nk3UlLjY0.net
そもそも変数を使いまわそうとしているのが間違い
using等でスコープと連動させて管理すべき

372:デフォルトの名無しさん
25/06/16 12:34:32.54 rtKSn8210.net
>>370
もうほんのちょいだけ突っ込んだ解説すると、||演算子は左から評価を行い、左がtrueになった時点で右は評価を行わない

ゆえに、nullが渡ってくる可能性がある場合には~というChatGPTの回答に繋がる

373:デフォルトの名無しさん
25/06/16 14:51:53.15 IaYLbsBg0.net
>>372
ショートサーキットの有無は全然関係ないだろ

ChatGPTのダメ回答にさらに間違ったダメ解説を付け足すなよ

374:デフォルトの名無しさん
25/06/16 17:32:21.61 MOf8oPnJ0.net


375:デフォルトの名無しさん
25/06/16 18:04:45.11 wwT4Yc020.net
>(obj != null)の部分って意味ないんでしょうか?

(obj != null)の部分が見当たらない問題

376:デフォルトの名無しさん
25/06/16 19:27:49.53 rtKSn8210.net
フェイルセーフで実装するコードに対して、全体見えないのに設計直せは草しか生えない。ChatGPTでもやらん暴挙
その上でなぜ左右逆だといけないのかの解説に対してショートサーキットの有無は関係ないとかガチで草

377:デフォルトの名無しさん
25/06/16 19:46:50.44 oIohr+2JM.net
その前にフェイルセーフなのかどうかすらわからないと思う
ここでしか初期化していないならフェイルセーフではない

378:デフォルトの名無しさん
25/06/16 19:54:04.99 oIohr+2JM.net
フェイルセーフ
例えば信号が壊れたときに赤になるようにしてあれば交差点に通常運転で突っ込む事故が起こらない
壊れるにしても事態を安全な方向に振ること

初期化忘れや破棄されたインスタンス等を初期化するのはフェイルセーフではない

379:デフォルトの名無しさん
25/06/16 21:31:49.20 wwT4Yc020.net
>>376
なぜ左右逆だといけないのかとショートサーキットの有無は関係ないんだけど指摘されてもマジでわかんないのか

ChatGPTの回答もう一度読んでみ?
あとはショートサーキット無しの|演算子にしたら問題がなくなるのかどうか考えてみ?

380:デフォルトの名無しさん
25/06/16 22:33:11.11 GWwonttx0.net
>>379
ああ言われて気づいた、説明間違ってたわ

最初のコードだと、左から判断を行うので、instance.IsDisposedを判定するときにinstanceがnullの場合にエラーが発生する
けど逆にするとinstance == nullではじくので、instance.IsDisposedは判定しなくなる

381:デフォルトの名無しさん
25/06/16 22:37:37.67 GWwonttx0.net
はじくじゃねーや、また言葉間違ってる

最初のコードだと、左から判断を行うのでnstanceがnullの場合にinstance.IsDisposeでNullにアクセスしようとしてぬるぽが発生する
けど逆にするとinstanceがnullの場合は左の条件だけで生成に向かい、またinstanceがnullではない場合には誤ってDisposeされているかどうかで判断して再生成する

382:デフォルトの名無しさん
25/06/17 03:09:44.29 37ojnUDK0.net
今の世の中AIがあんのにまだこんな場末のド素人のホビープログラマーと知ったかの吹き溜まりにきよんのか理解に苦しむんやがwww
まぁAIの使い方すらわからん低脳チンパンやからこんなまともな回答が返ってこーへんスレで質問しとんのやろーなクソワロタ

383:デフォルトの名無しさん
25/06/17 03:15:38.49 TyHic1BD0.net
なるほどこれがチンパンジーか

384:デフォルトの名無しさん
25/06/17 19:36:15.47 ItQB0Ii0a.net
答えもらうつもりで来とるやつなんかおらんやろ

385:デフォルトの名無しさん
25/06/17 20:04:41.87 lyLRSSY/M.net
>>381
あんたの言葉の方が、native 日本人にはおかしく聞こえる。
380 の説明は自然な日本語であり、論理的にも正確。

386:デフォルトの名無しさん
25/06/17 20:06:58.69 lyLRSSY/M.net
>>379
|| 演算子のショートサーキット評価 (短絡評価) は大いに関係ある。

387:デフォルトの名無しさん
25/06/17 20:46:19.23 QaggVUGV0.net
null判定を後に書いちゃうのはショートサーキット評価有無以前の問題だって話だろ

388:デフォルトの名無しさん
25/06/17 22:02:13.98 EAFPsc4EM.net
>>387
何言ってんだか。

389:デフォルトの名無しさん
25/06/17 22:56:13.68 6ofORGWH0.net
null合体演算子を使う方法もある
if (instance?.IsDisposed ?? true) {...}

「ヌルの場合は」という条件を強く示したいなら is null を明示して良いと思うけど、個人的にはこちらの方が簡潔に感じる

できればプロジェクトの設定でnull参照許容型を有効にして、 instance が null になり得るかを宣言時に分かるようにするとベター
(null になり得るなら MyClass? instance のように書く)
これが有効なプロジェクトなら、nullにならないもの (?がついてない変数やフィールド) についての null チェックはしなくて良い

390:デフォルトの名無しさん
25/06/17 23:34:10.59 iqT3/wLqM.net
それをコードそのまんまで日本語化してみろよ
基地外じみた内容にしかならない

391:デフォルトの名無しさん
25/06/18 08:47:51.67 KyoQ8vl80.net
ミネオはキチガイしか居らんのか

392:デフォルトの名無しさん
25/06/18 17:42:58.37 SrJIdorw0.net
世界最長のコンテキストウィンドウ100万トークン入力・8万トークン出力対応にもかかわらずたった7800万円でトレーニングされたAIモデル「MiniMax-M1」がオープンソースで公開され誰でもダウンロード可能に
2025年06月18日 11時43分
URLリンク(gigazine.net)
>>MiniMax-M1は、合計4560億のパラメーターが含まれており、トークンごとに459億のパラメーターがアクティブになるとのこと。これはDeepSeek R1の8倍に相当するコンテキストウィンドウです
>>以下のグラフは競技レベルの数学、コーディング、ソフトウェアエンジニアリング、エージェントツールの使用、長文理解タスクにおけるパフォーマンスを主要な商用AIモデルと比較したもの。赤色がMiniMax-M1で、どのタスクにおいても競合AIモデルに匹敵するパフォーマンスを発揮できている
>>MiiniMax-M1はいくつかのベンチマーク、特に長いコンテキスト駆動のベンチマークでClaude Opus 4のパフォーマンスを上回りました」と報告
※AIを動作させている動画あり
↓上記のAIお下記をプレイさせれば性能が判明する
Gemini 2.5 Proは手持ちのポケモンが瀕死になるとパニックに陥る
2025年06月18日 12時30分
URLリンク(gigazine.net)

[プロテクトガードやセキュリティーホール発見可能]
※1 プログラムのバグ技[裏抜け道]を使用できる=チートコードを発見可能
・ マリオカートのショートカットはプレイヤー「極悪人」の表の抜け道でNPC「一般人」は使用不可能
[インサイダー/談合/なねーロンダリング/霊感商法など行う時の悪行で音波や電波をしての悪行の方法を発見可能
※ 政治家の法律上の抜け道を仕込める=ある業種だけの法律の抜け道を発見可能
[一般大衆の思考である特定の極悪人から目線を特定の統合失調症へ返させる装置]
※ AIは正確な情報で人間を信用させれる=AIは嘘の情報を一部混ぜて人間を洗脳できる


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch