1 名前:デフォルトの名無しさん [2022/09/18(日) 14:39:29.51 ID:VjUDO6tf0.net] 次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為) 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください >>980 を踏んだ人は新スレを建てて下さい。>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part155 https://mevius.5ch.net/test/read.cgi/tech/1655422932/ ■関連スレ C#, C♯, C#相談室 Part96 https://mevius.5ch.net/test/read.cgi/tech/1639965805/ ■コードを貼る場合は↓を使いましょう。 https://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/ https://referencesource.microsoft.com/ https://source.dot.net/ ・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
66 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:20:55.11 ID:LsBo1VKG0.net] ていうか参照渡しじゃなくHashSetを使ってやりとりするんじゃいかんの?
67 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:23:37.50 ID:LsBo1VKG0.net] HashSetじゃなかった Hashtableだ
68 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:32:12.76 ID:cIZHSBt80.net] structにこだわる意味はなさそうだしそれならrefも必要ないし そもそもFuncの返値にすればいいんじゃないの的な
69 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:37:17.49 ID:LsBo1VKG0.net] Hashtableを使う場合 Add-Type @" using System; using System.Collections; public class Helper { public static void CallbackTest(Action<Hashtable> proc) { var p = new Hashtable(); p["bState1"] = true; p["bState2"] = true; Console.WriteLine($"bState1:{p["bState1"]}, bState2:{p["bState2"]}"); proc(p); Console.WriteLine($"bState1:{p["bState1"]}, bState2:{p["bState2"]}"); } } "@ [Helper]::CallbackTest({param($p);$p.bState1 | Out-Host; $p.bState1 = $false; $p.bState1 | Out-Host })
70 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:41:08.41 ID:J8MleXan0.net] >>63 普通に bState1: True True False bState1: False ってなるけど? $PSVersionTable.PSVersion: 5.1.19041.1682
71 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:45:59.80 ID:LsBo1VKG0.net] >>59 Prismは大袈裟すぎるがMVVMを使うなら何か一つフレームワークは必須 CommunityToolkit.Mvvmいいぞ 必要な機能は揃ってるのにシンプルで学習コストが低く軽い これで慣れてからPrismに移ってもいいし仕事じゃなきゃ移らなくても何も問題ない
72 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:51:36.15 ID:cIZHSBt80.net] >>70 class PSParamをstruct PSParamに変えても?
73 名前:デフォルトの名無しさん [2022/09/27(火) 16:53:51.16 ID:rJ/evy9A0.net] >>71 ふむふむなるほど…
74 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 16:58:10.34 ID:SwtBqNyR0.net] >>69 わざわざC#でやるからには少しでもパフォーマンスを上げたいので、 C#側でハッシュとかPSObjectで文字列のプロパティを作って渡すとかは極力避けたいのです。 >>70 >>72 の仰る通りclassで渡してるので正常に動くやつです。structに変えて試してください。
75 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 17:03:06.67 ID:SwtBqNyR0.net] ちなみにテスト結果は 値の参照渡し× >>63-64 参照の値渡し○ 参照の参照渡し○ でしたので、コンテナを渡す限りではrefは必要ないですね。
76 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 17:04:20.64 ID:LsBo1VKG0.net] >>74 そんなんでパフォーマンス上がらんぞ PowerShell使ってる時点で無意味だし計測しても誤差が大きすぎて差は出ない スクリプトブロックをデリゲートに入れるための代理関数とか中で作られてるからな
77 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 18:47:57.59 ID:SwtBqNyR0.net] >>76 計測してみました。 以下のclassでパラメーター渡すのよりもHashtableのが2割程速い結果になりました・・・これはHashtable採用ですね。 Add-Type @" using System; using System.Collections; public class Helper { public class PSParam { public bool bState1; public bool bState2; }; public static void CallbackTest1(Action<PSParam> proc) { var p = new PSParam(); p.bState1 = true; p.bState2 = true; proc(p); } public static void CallbackTest2(Action<Hashtable> proc) { var p = new Hashtable(); p["bState1"] = true; p["bState2"] = true; proc(p); } } "@ (Measure-Command { 1..10000 | %{ [Helper]::CallbackTest1({param($p);$p.bState1 = $false; }) } }).TotalMilliseconds (Measure-Command { 1..10000 | %{ [Helper]::CallbackTest2({param($p);$p.bState1 = $false; }) } }).TotalMilliseconds
78 名前:デフォルトの名無しさん (ワッチョイ 1201-ut7I) mailto:sage [[ここ壊れてます] .net] >>72 ああ、すまんちゃんと読んでなかったわ まあ、仕様だろうね 変更可能な値型は避けろって書いてある ❌ 変更可能な値型を定義しないでください。 (... 中略 ...) また、一部の言語 (特に動的言語) では、ローカル変数であっても逆参照されるときにコピーが作成されるため、変更可能な値型の使用で問題が発生します。 https://learn.microsoft.com/ja-jp/dotnet/standard/design-guidelines/struct 普通にクラスで作ればいいだけ、てかPowerShell使ってる時点でclass/structで細かいパフォーマンスチューニングしても無駄だと思うぞ
79 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 20:39:58.78 ID:wQgw+D+40.net] VS2019で.NET 4.5 + NugetでValueTuple入れて作ったプロジェクトを VS2012で読もうとしたらValueTuple扱えなかった・・ VS2012も.NET 4.5は大丈夫だけど、ValueTupleだとC#のバージョンが問題になるのかな?
80 名前:デフォルトの名無しさん mailto:sage [2022/09/27(火) 21:45:06.74 ID:LsBo1VKG0.net] https://qiita.com/shimamura_io/items/5a1c754914b864540bac この手のめんどくさいトラブル抱える可能性残すくらいなら4.8使うかValueTuppleあきらめろよ
81 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:17:08.29 ID:if0kFZkG0.net] VS2012じゃC#コンパイラが全然タプルに対応できないからね 普通の構造体として扱うことはできるかもしれないが
82 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:31:43.95 ID:qrxLeK0JF.net] 読んでビルドするだけならVSCode使うほうがよさそうかな
83 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:37:42.78 ID:ZrAf2Mbg0.net] 学習オプションをGUIでも確認しやすいという意味でも VSの方がはるかに向いてるが。 VSCodeが候補にあがるのはAzure使っててC#だけでなく 色々混じってる時くらいでしょ。
84 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 08:38:04.69 ID:ZrAf2Mbg0.net] 学習→GUI
85 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 09:06:32.72 ID:FDPwu/KN0.net] そこでQtですよ(嘘)
86 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 10:26:54.48 ID:Jk2txA1W0.net] QtやTcl/Tkとか名前は聞くけど誰も使っている人居ないんだよね WinFormsより簡単なの出さないと日本では流行る気がしないw
87 名前:デフォルトの名無しさん mailto:sage [2022/09/28(水) 12:46:58.02 ID:GXLv430Ua.net] >>86 かつてのDelphiやVB6の役割が今のWinforms これ以上簡単なモノは出ないだろ
88 名前:デフォルトの名無しさん [2022/09/29(木) 10:40:58.78 ID:yzYmCLI10.net] オブジェクト指向で クラス=ニュークラス 変数A=クラス.メソッド(引数) で他のクラスでメソッドで作った変数Bを変数Aに代入したいとき returnで返すのが一般的なんかな? 俺他のクラスでプロパティ作ってメソッド内で作った変数Bをプロパティに入れて クラス=ニュークラス クラス.メソッド(引数) 変数A=クラス.プロパティ にしてるんだけど異端か? なんか遅くなるとかの弊害ある?
89 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 10:56:44.30 ID:ZDD9PwVa0.net] >>88 #nullable enableにすると、そのプロパティーを hoge? にしないとワーニングが出てくるね
90 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 11:05:58.40 ID:c05GXPup0.net] そのclassの設計次第だとは思うけど… 単純な計算結果を必要としているのならstatic methodにして直接メソッドの結果を取得する方が分かりやすいだろうし インスタンスの何かがその処理に必要であるのならプロパティ経由で取得する方が良いだろうし
91 名前:デフォルトの名無しさん [2022/09/29(木) 11:27:28.88 ID:yzYmCLI10.net] ふむふむケースバイケースなのかな?
92 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 11:48:18.47 ID:nA4Nikqb0.net] メソッドの仕様とプロパティの仕様の二つを読まなきゃならなくなるから一般的に可読性と保守性は落ちる あと副作用前提なので参照透過でなく多用するとスパゲッティになりやすくなる メソッドがthisを返すならMauiAppBuilderみたいにメソッドチェーンで使えるようになるしプロパティパターンでパターンマッチングできるから場合によっては便利になる
93 名前:デフォルトの名無しさん [2022/09/29(木) 17:05:48.88 ID:yzYmCLI10.net] >>92 なるほどありがとうございます
94 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 08:39:35.64 ID:EDStmk6M0.net] ブラウザの「名前をつけてページを保存」をWebview2でやりたいのですが、無理ですかね? stream で読み込むくらいしか方法はないですか?
95 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 08:48:17.73 ID:2B0IsOOc0.net] >>94 それはブラウザの役目であってHTMLをレンダリングして表示するWebViewの役目じゃない スマホのブラウザにはそんな機能ないだろ
96 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 09:34:14.17 ID:EDStmk6M0.net] >>95 そうですよね WebBrowserにはWebBrowser.ShowSaveAsDialog メソッドがあったのですが・・・
97 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 09:40:46.42 ID:Vj0oK+Fa0.net] Chromeとかのダイアログも結局はWindowsならshell32のSHBrowseForFolder利用したりとOSの機能使ってるだけなんじゃないの?
98 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:43:04.40 ID:EDStmk6M0.net] >>315 予想で来ていたなら大儲けしたんだろ ついでにそのスクショもうぷ
99 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:47:28.56 ID:HrxhgRpA0.net] >>98 おまえの予想のほうがスゲェ!w
100 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 10:52:54.13 ID:EDStmk6M0.net] 誤爆w webvew2コントロール上で右クリックすると「名前を付けて保存」が出るようなので そこを自動でやるだけなですがいい方法ないですかね?
101 名前:デフォルトの名無しさん [2022/10/01(土) 11:36:18.78 ID:CdyuxRrm0.net] そのページのHTMLをHTML方式で保存すればいいだけなのでは?
102 名前:デフォルトの名無しさん [2022/10/01(土) 11:41:05.38 ID:CdyuxRrm0.net] WebView2ならJavaScriptを呼び出せるメソッドがあるからhtmlタグの中身をゲットしてそれを保存すればいいだけのような気がするがどうなんだろ?
103 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 11:47:25.93 ID:EDStmk6M0.net] HTMLだけだとcssやjsが含まれていないので 落としたHTMLを表示するとまともに表示されない問題が発生してしまいます ブラウザの「名前を付けて保存」は完璧に保存されますのでそちらが使いたいです
104 名前:デフォルトの名無しさん mailto:sage [2022/10/01(土) 23:19:37.45 ID:4ls5cXfL0.net] 以下WebView2のエキスパートでもなんでもないから見当違いかもしれないので話半分で ちょっとぐぐってみたけどWebView2で「名前を付けて保存」相当をやってる情報は出てこないね Webブラウザでもページの保存は割と面倒な処理に該当するはずだからseleniumとかでWebブラウザに丸投げする方法を考えた方がいいと思うよ
105 名前:デフォルトの名無しさん [2022/10/02(日) 01:20:34.77 ID:jE287c4+0.net] ソリューションエクスプローラーに配置したJsonファイルをデシリアライズしてObservableCollectionに入れたいのですがどうすれば良いでしょうか? using var stream = await FileSystem.OpenAppPackageFileAsync("monkeydata.json"); using var reader = new StreamReader(stream); var contents = await reader.ReadToEndAsync(); monkeyList = JsonSerializer.Deserialize<List<Monkey>>(contents); ↑これを参考にやってみたのですがファイルが見つからないとか言われてしまいます
106 名前:デフォルトの名無しさん [2022/10/02(日) 01:21:00.49 ID:jE287c4+0.net] 参考にしてるサイトはこれです… https://github.com/dotnet-presentations/dotnet-maui-workshop/tree/main/Part%202%20-%20MVVM
107 名前:デフォルトの名無しさん mailto:sage [2022/10/02(日) 01:46:38.36 ID:w76y/xOG0.net] 一行目でエラーなら単純にファイルが無いのでは? VSでデバッグの時のカレントがどこなのかそういう知識が無くパス指定も無く開けなかったら カレントに無いぐらいは分かりそうなものなのに・・・
108 名前:デフォルトの名無しさん [2022/10/02(日) 02:00:42.79 ID:jE287c4+0.net] VSに入れたファイルのパスの指定方法ってどうすればいいんですかね? ファイル名だけで勝手にソリューション内のファイル検索して取り込めるのか相対パスなのか完全パスなのか… 相対パスならどこからの相対パスを書けばいいのか…
109 名前:デフォルトの名無しさん mailto:sage [2022/10/02(日) 02:02:35.93 ID:kEuGN+uq0.net] ビルドアクション設定してないだけだろ
110 名前:デフォルトの名無しさん [2022/10/02(日) 02:31:53.74 ID:jE287c4+0.net] ビルドアクションは埋め込みリソースに設定すればいいんですか? 何に設定すればいいんですか?
111 名前:デフォルトの名無しさん (スップ Sd1f-XcTz) [[ここ壊れてます] .net] 何やらせても出来なさそう
112 名前:デフォルトの名無しさん mailto:sage [2022/10/02(日) 08:28:15.79 ID:oLIGWTx6a.net] 参考という名のコピペ 考える材料を参考というのであって脳死で真似るのは参考にしたとは言わん なぜOpenAppPackageFileAsyncを調べないのか https://learn.microsoft.com/ja-jp/xamarin/essentials/file-system-helpers?tabs=android#platform-implementation-specifics こんなややこしいものより普通に埋め込みリソースにして次のメソッド使った方がいい https://learn.microsoft.com/ja-jp/dotnet/api/system.reflection.assembly.getmanifestresourcestream?view=net-6.0
113 名前:デフォルトの名無しさん [2022/10/02(日) 08:47:31.34 ID:jcW3SqyJ0.net] >>112 ありがとうございます! MauiAssetにしてResourcesからの相対パスにしたらいけました!
114 名前:デフォルトの名無しさん [2022/10/03(月) 21:31:13.59 ID:7M+SSEiP0.net] ListやObservableCollectionとか作るときに別classでget,setでプロパティ作るけどこれってなんて言うものなの? 他の言語とかも一緒?
115 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 21:32:38.29 ID:tDVewfT+0.net] よくわからんがViewModelの話をしてるのか?
116 名前:デフォルトの名無しさん [2022/10/03(月) 21:35:24.31 ID:7M+SSEiP0.net] >>115 どっちかというとModelの話かな ほとんどの人がModelフォルダにpublic〇〇get,setしてる
117 名前:デフォルトの名無しさん [2022/10/03(月) 21:38:09.72 ID:7M+SSEiP0.net] List‹〇〇›とかObservableCollection‹〇〇›とかの〇〇部分 xamlだと{Binding 〇〇}で〇〇の中に定義したプロパティを読み込めるやつ
118 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 22:52:42.56 ID:5XdXjLTq0.net] doubleにTryParseした値を別な変数に入れたいけど、もっと素直な書き方ないかな? var value = double.TryParse(str, out dbl) ? dbl : dbl;
119 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 22:56:32.76 ID:tDVewfT+0.net] >>118 なんだその無意味な三項演算子
120 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 22:57:43.85 ID:tDVewfT+0.net] >>117 型引数なのか要素なのかモデルなのか何のことを言ってるのかわからん
121 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 23:18:54.43 ID:rGUf1MZJ0.net] 選択肢がめっちゃ多い中で1つ選ばせるコントロールって何が良いですかね? 80項目くらいあるのでコンボボックスはNGになりまして。 選択内容は 数値:文字列 で表示したいです。
122 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 23:31:02.94 ID:SA/xrkif0.net] >>121 何で決定するの?それ 何か見て決めるんでしょ? それを画面に出せよ
123 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 00:32:43.24 ID:7S0AjRuD0.net] 立ち食いそば屋の券売機みたいにボタン並べればいいじゃん
124 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 06:40:39.38 ID:b8uw2VbJ0.net] >>119 我ながら意味不明だけど、TryParseした"dbl"を"value"に1行で代入する方法をこれしか思いつかなかった どうやればTryParseの結果を式として返せるの?
125 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 06:46:15.22 ID:Ls9e4TwG0.net] >>124 失敗したときの戻り値どうすんの?
126 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 06:46:54.63 ID:Ls9e4TwG0.net] >>121 別画面
127 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 06:56:27.63 ID:XU+NToANM.net] double.TryParse(str, out var value)
128 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 07:10:40.44 ID:qbIePR+RM.net] >>124 メソッドにしろよなんでもできるぞ
129 名前:デフォルトの名無しさん (ワッチョイ 0307-CLHJ) mailto:sage [[ここ壊れてます] .net] >>126 ついでだが選択肢が80もあるなら検索ボックスも欲しいな 欲しいというか必須 別画面にせずともコンボボックスで検索するという手もある
130 名前:デフォルトの名無しさん (ワッチョイ ff01-d1zO) mailto:sage [[ここ壊れてます] .net] >>124 絶対に失敗しないなら単に double.Parse(str) でいいし、失敗する可能性あるなら失敗した時にどうしたいのかによるわな
131 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 08:37:00.95 ID:83NgMl870.net] >>121 高さある程度とったリストボックスでいいんじゃない フォントダイアログのフォントみたいな 頭に数字付けるのはインクリメンタルサーチとの兼ね合いがあるが項目が日本語なら関係ないか
132 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 11:59:18.04 ID:36QRloIgM.net] >>121 Google翻訳の言語選択画面とか StackOverflowやEvernoteのタグ選択画面とか 有名どころで類似画面を見つけてそれを参考にするといい 選択肢の数だけじゃなく選択させたいデータの特徴とユースケースによって適切なUIは変わってくる
133 名前:デフォルトの名無しさん [2022/10/04(火) 12:28:46.35 ID:Pbtsxb5E0.net] IsVisibleプロパティでリストビューを最初に消しててボタン押すとリストビューのIsVisibleがtrueになる そのリストビューを選択させてSlectedイベントハンドラーでボタンのテキストを選択したものにするみたいな
134 名前:デフォルトの名無しさん [2022/10/04(火) 12:34:13.22 ID:Pbtsxb5E0.net] Slectedイベントでもう一度ListViewのIsVisibleをfalseにするとスムーズかも WPFの場合はVisibility=collapsedにすれば画面専有しなくなる このプロパティめっちゃ便利だからみんなも使って
135 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 12:34:32.55 ID:Ls9e4TwG0.net] >>133 それコンボボックスと何が違うんだ
136 名前:デフォルトの名無しさん [2022/10/04(火) 12:37:11.62 ID:Pbtsxb5E0.net] >>135 リストビューだからイメージとかも表示できる datatemplate設定する必要あるけどね リストビューだけじゃなくてcollectionViewとか使ったら横2行でスクロールできるようになるし
137 名前:デフォルトの名無しさん [2022/10/04(火) 12:38:40.11 ID:Pbtsxb5E0.net] 検索バーもリストに紐付けられてたような気がするから更に便利かも 検索バーもリストビューとかと同様にIsVisibleが連動するようにしておく
138 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 12:39:40.83 ID:Ls9e4TwG0.net] >>136 選択するのは数値と文字列って書いてるが
139 名前:デフォルトの名無しさん [2022/10/04(火) 12:39:58.19 ID:Pbtsxb5E0.net] まぁめんどくさかったらコンボボックスでもいいけどね 1つしか項目ないならこっちのほうが楽だと思う
140 名前:デフォルトの名無しさん [2022/10/04(火) 12:41:35.19 ID:Pbtsxb5E0.net] >>138 UIとかこだわるならListViewかなぁ
141 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 23:58:06.92 ID:b8uw2VbJ0.net] >>125 >>130 iniファイルからの読み込みなので失敗もありえて、その場合は0.0が期待値ですね TryPaerse失敗でoutの方は0.0になるので、単純にoutの値が欲しいだけなんです ラムダでもうまく書けないので、>>128 の言うようにメソッドにするしかないですかね
142 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 00:01:10.13 ID:KHa19VaR0.net] >>141 double.TryParse(str,out double value) ? value : 0
143 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 03:41:09.33 ID:ILrwmDD80.net] 値が本当に0.0だったときに腹を切る用意はできてんだろうな?
144 名前:デフォルトの名無しさん [2022/10/05(水) 07:40:46.91 ID:2+KVHgSc0.net] 失敗したときは初期値を代入する、って意図なら default にした方が分かりやすいぞ
145 名前:デフォルトの名無しさん (ワッチョイ cf2c-kE2G) mailto:sage [[ここ壊れてます] .net] どうしても代入式じゃなきゃヤダってんじゃない限り>>127 で十分なんだけど
146 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 22:42:08.40 ID:UUeH3vvk0.net] Convert.ToDouble...ボソッ
147 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 22:43:51.91 ID:UUeH3vvk0.net] あ、失敗したとき考えたら同じだった…
148 名前:デフォルトの名無しさん [2022/10/06(木) 18:05:18.67 ID:l5eCu49d0.net] c#でコードをすっきり書く方法について unityです 以下のようなメインルーチンと自作関数がありますが、自作関数が多くなると間延びして見づらくなります こうズラズラと書いていっていいものでしょうか? void update() { //この中に記載したものが1フレームごとに実行される } void zisaku_kansu1() {} void zisaku_kansu2() {} void zisaku_kansu3() {}
149 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 18:19:06.66 ID:okBm6j3n0.net] 知らんけどどのオブジェクトにメソッドを生やすかは見やすさ関係なしに選んだ方がいい メソッドが増えすぎる場合クラスが肥大化しすぎて単一責任原則に反している可能性があるから他のクラスに分割できないかどうかを検討してみろ
150 名前:デフォルトの名無しさん [2022/10/06(木) 18:29:05.50 ID:l5eCu49d0.net] スクリプト1つにここまで、みたいな目安はあるんでしょうか?
151 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 18:39:38.40 ID:okBm6j3n0.net] 無いよ 数じゃない せっかく単一責任原則ってキーワード出てるんだから調べてみたら?
152 名前:デフォルトの名無しさん (ワッチョイ a359-eWb8) [[ここ壊れてます] .net] 了解です 問題が出たらそのときに対処します
153 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 21:08:47.37 ID:g4tnGNpoM.net] もう問題でてるやん
154 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 22:21:54.37 ID:/3bhbDDg0.net] bool? x; をint の 0,1,2 にしたいのですが return (x is null) ? 0 : x ?? false ? 2 : 1; もっとかっこよく出来ませんか?
155 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 22:44:56.92 ID:eGnFz/dY0.net] ほとんど変わらんけど x.HasValue ? x.Value ? 2 : 1 : 0;
156 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:20:02.95 ID:KOHZa6QXM.net] 見やすさを優先したいなら複数行で return x swicth { true => 2, false => 1, _ => 0, }; と書きたいなあ 1行で return x swicth { true => 2, false => 1, _ => 0 }; と書いてもたぶん大丈夫だとは思うけど
157 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:28:30.50 ID:okBm6j3n0.net] ネタコードだけど new bool?[]{null,false,true}.IndexOf(x)
158 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:51:14.28 ID:E7iO37Ge0.net] >>155 かっこつけてないじゃん x.HasValue ? (x.Value ? 2 : 1) : 0;
159 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 00:30:44.40 ID:5dN4BPEk0.net] >>158 かっこが無くてもちゃんと動くよ あった方が分かりやすくて良いけど
160 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 02:06:25.47 ID:ICIDzMHN0.net] その変態コードやるならメソッドにして手厚くコメント入れて欲しい 明示的にif文でデカデカと対応がわかるように並べて欲しい 一石二鳥なんか狙う場面じゃない
161 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 02:08:27.00 ID:ICIDzMHN0.net] そのイカれたクソ設計考えたやつの名前と設計書の項目番号も添えて わかるように並べるべき
162 名前:デフォルトの名無しさん [2022/10/07(金) 03:43:01.87 ID:Y3Bhrpk2d.net] 馬鹿は何でもかんでも短くすれば良いと思ってる
163 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 07:30:32.84 ID:DG0Qp9kf0.net] switch式って.NET Frameworkだと(というかC# 7.3までだと)使えないんだね .NET FrameworkでC# 8.0以上に上げるのは推奨されないって見てビビった
164 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 09:36:20.95 ID:Kp+8ZYZad.net] 推奨されないというか、C#8.0以上では.NET Frameworkは公式にサポート外となった 仮にたまたま今動いてても明日.NET Frameworkのセキュリティパッチで突然動かなくなるかもしれないし、もちろんMSは修正しないよ
165 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 11:14:52.33 ID:vnTjz+tv0.net] まあ今出てる中ならどれでもいいわ 少し見にくいとしても読めないレベルじゃないから
166 名前:デフォルトの名無しさん mailto:sage [2022/10/07(金) 11:22:49.33 ID:HMB85mTQ0.net] 忍者コードへの道