[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 12/09 23:01 / Filesize : 249 KB / Number-of Response : 990
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっと C#,C♯,C#(初心者用) Part156



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]
忍者コードへの道






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<249KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef