!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part157
https://mevius.5ch.net/test/read.cgi/tech/1669349768/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part158
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ fe7b-Nimo)
2023/03/26(日) 07:31:00.51ID:2LMOL5Ty0230デフォルトの名無しさん (オッペケ Srd1-HvLO)
2023/04/12(水) 10:30:19.47ID:mXnPigifr いちいち質問者を貶すようなことでもなかろうに
231デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
2023/04/12(水) 11:26:53.10ID:yAM4RrWLM どちらかと言うと本文を読んでいないのが >>229 でみんな雰囲気で答えてるだけ
英語嫁
英語嫁
232デフォルトの名無しさん (アウアウウー Sa05-NO7/)
2023/04/12(水) 12:21:14.58ID:bugel0eha バグしか生まない実装を紹介する本ねぇ
読んだと自称するやつにはそう見えるのか
春だなぁ
読んだと自称するやつにはそう見えるのか
春だなぁ
233デフォルトの名無しさん (ブーイモ MM66-Udzl)
2023/04/12(水) 12:29:42.24ID:USOc3PY3M 実際質問の出力結果示さずにこのスレの連中にstaticありなしの出力結果予想させたら3割も正解しなさそう
234デフォルトの名無しさん (オッペケ Srd1-ZlFW)
2023/04/12(水) 12:31:58.00ID:gsM5MkRcr そういう意味ではアンチパターンだな
235デフォルトの名無しさん (オッペケ Srd1-HvLO)
2023/04/12(水) 13:45:09.09ID:4Can4aDGr C#の挙動がなぜそうなってるかの理由を知ることと、それを実際に開発に使用するかどうかは話が別だろう
当の本もこの挙動を利用して実装しろと勧めてるわけでもなし、バグしか生まない~などと腐すのも筋違い
当の本もこの挙動を利用して実装しろと勧めてるわけでもなし、バグしか生まない~などと腐すのも筋違い
236デフォルトの名無しさん (ワッチョイ 4201-BePx)
2023/04/12(水) 14:11:43.79ID:uWUQySNG0 本に書いてあるコードでは>>225の5行目にstaticはついてない
3行目と4行目を入れ替えると出力結果が変わるようなことになるという注意を促して
イニシャライザの実行順序を理解させようとしている
static fieldの定義順に依存したコードはアンチパターンと言ってもいい気はするが
現実には↓こういうコード書く人がいるので動きを理解してることは重要
https://stackoverflow.com/questions/54692923/
3行目と4行目を入れ替えると出力結果が変わるようなことになるという注意を促して
イニシャライザの実行順序を理解させようとしている
static fieldの定義順に依存したコードはアンチパターンと言ってもいい気はするが
現実には↓こういうコード書く人がいるので動きを理解してることは重要
https://stackoverflow.com/questions/54692923/
237デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
2023/04/12(水) 17:54:22.82ID:lYmUspEYM 本にはこのコードのstaticはついてないのでいくら読んでもそういう話にはならない
コード提示した人が自分でstaticつけて疑問に思ったことを書いてるだけ
チャンと英語読めば批判してる人の脊髄反射でしかないとわかる
コード提示した人が自分でstaticつけて疑問に思ったことを書いてるだけ
チャンと英語読めば批判してる人の脊髄反射でしかないとわかる
238デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
2023/04/12(水) 17:57:59.05ID:lYmUspEYM >>232
英語嫁と上で書いてやったのに読まない馬鹿
英語嫁と上で書いてやったのに読まない馬鹿
239デフォルトの名無しさん (オイコラミネオ MM29-Ay2p)
2023/04/12(水) 18:00:18.84ID:lYmUspEYM240デフォルトの名無しさん (ワッチョイ d907-NO7/)
2023/04/12(水) 21:13:56.15ID:75Jdcna40 草
241デフォルトの名無しさん (ワッチョイ c5ae-izbf)
2023/04/13(木) 17:15:29.58ID:Zu8K3N7a0 過去にはAny CPUを選ぶと32bitライブラリか64bitライブラリかわからなくてエラーになる事があるから、
x86かx64に固定するのを推奨とかどこかで見た気がするけど、
今はそんな事無くなったのかな?
x86かx64に固定するのを推奨とかどこかで見た気がするけど、
今はそんな事無くなったのかな?
242デフォルトの名無しさん (ワッチョイ c7e5-S3w6)
2023/04/18(火) 09:43:52.47ID:8GgykzJw0 ifで非null判定してからアクセスしてんのにnullの可能性がありますとか警告出す最近のC#はほんとクソ
243デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/18(火) 09:47:05.00ID:zIS6YJzM0 >>242
出さねーよw
出さねーよw
244デフォルトの名無しさん (ワッチョイ bfda-wFhX)
2023/04/18(火) 10:17:07.64ID:HhMbwi3l0 コンパイラのnullチェックを混乱させる凄い(≠素晴らしい)コードなのかもしれない
245デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
2023/04/18(火) 10:21:16.50ID:dDei21Qyp 見落としてる分岐があるだけだろ
246デフォルトの名無しさん (アウアウウー Sacb-uZLY)
2023/04/18(火) 10:22:53.46ID:HoHH5EgOa 多分チェックした後に別の値を代入するか値が変化するものを使ってるんだろうな
たとえばプロパティは一回目のアクセスと二回目のアクセスで同じ値が得られるとは限らない
変数に入れろ
そしたら多分警告消えるから
たとえばプロパティは一回目のアクセスと二回目のアクセスで同じ値が得られるとは限らない
変数に入れろ
そしたら多分警告消えるから
247デフォルトの名無しさん (ワッチョイ dfbd-baic)
2023/04/19(水) 07:26:32.14ID:9LVfV8Mo0 警告が消えるのに時間がかかったり、Visual Studioを立ち上げ直したら警告が消えたことがある。
248デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/19(水) 07:56:31.56ID:A9DJak9S0 マシンが遅いだけ
249デフォルトの名無しさん (ワッチョイ bf42-sFbk)
2023/04/19(水) 08:18:39.49ID:/RLG/xCj0 不必要なhoge?.hage();が残っているとnull判定されることがあるね
?取るとワーニングが消える
?取るとワーニングが消える
250デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/19(水) 09:00:29.09ID:A9DJak9S0 hoge?.hoge()はhoge!=null?hoge():nullと同じ
nullが返る可能性があることを示すコードだからそりゃnullの可能性があると判定されるわな
nullが返る可能性があることを示すコードだからそりゃnullの可能性があると判定されるわな
251デフォルトの名無しさん (ワッチョイ bf42-sFbk)
2023/04/19(水) 09:16:28.63ID:/RLG/xCj0252デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/19(水) 09:45:55.68ID:A9DJak9S0 そこで問題がないのに出るわけないじゃん
離れた場所にあるなら一度変数に入れなよ
そしたらnullの可能性があるかどうかマウスホバーで教えてくれるから
離れた場所にあるなら一度変数に入れなよ
そしたらnullの可能性があるかどうかマウスホバーで教えてくれるから
253デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/19(水) 09:47:07.48ID:A9DJak9S0 結局この警告はバグを潰してくれてるものだから文句を言うのは筋違いだぞ
本来なら警告の代わりに実行時エラーになってたものだからな
本来なら警告の代わりに実行時エラーになってたものだからな
254デフォルトの名無しさん (ワッチョイ bf42-sFbk)
2023/04/19(水) 10:04:51.79ID:/RLG/xCj0 >>252
コンストラクタなどで初期化していて本来はワーニングが出るはずがないのに
途中でhoge?hage()なんてコードがあるからヌルが入る可能性があると判断されるようだ
だから?を外すと解決するんだが、それに築くのが大変って話ね
コンストラクタなどで初期化していて本来はワーニングが出るはずがないのに
途中でhoge?hage()なんてコードがあるからヌルが入る可能性があると判断されるようだ
だから?を外すと解決するんだが、それに築くのが大変って話ね
255デフォルトの名無しさん (ワッチョイ 4707-uZLY)
2023/04/19(水) 10:18:42.95ID:A9DJak9S0 そこでnullを代入してるのに気づくのが大変てことはないと思うがな
警告が出ないなら大変かもしれんけど
警告が出ないなら大変かもしれんけど
256デフォルトの名無しさん (アウアウウー Sacb-uZLY)
2023/04/19(水) 10:25:41.00ID:ozyRSzfKa たとえばUnityなんかだと暗黙の代入演算子をいじっててnullでないものがnullエラーを出すよ
コンストラクタで生成してすぐnullになるオブジェクトも作れる
そういうのを実行前に警告として教えてくれてるんだから親切以外のなにものでもないだろ
警告があれば何か問題があることにすぐ気づけるし気づいたらマウスをちょっと動かせば原因がわかる
コーディングが簡単になりこそすれ難しくなることなんかないだろ
コンストラクタで生成してすぐnullになるオブジェクトも作れる
そういうのを実行前に警告として教えてくれてるんだから親切以外のなにものでもないだろ
警告があれば何か問題があることにすぐ気づけるし気づいたらマウスをちょっと動かせば原因がわかる
コーディングが簡単になりこそすれ難しくなることなんかないだろ
257デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
2023/04/19(水) 10:29:18.14ID:wTDlMyrbp nullableなboolean変数を条件判断させるとき
nullだったらどっちに判定されるんだ?
nullだったらどっちに判定されるんだ?
258デフォルトの名無しさん (アウアウウー Sacb-uZLY)
2023/04/19(水) 10:43:36.85ID:ozyRSzfKa どっちでもない
nullはnull
nullはnull
259デフォルトの名無しさん (ワッチョイ 7ff2-iKPJ)
2023/04/19(水) 12:47:18.86ID:/ifWvnPE0 勉強になった!
260デフォルトの名無しさん (スプッッ Sdff-wBI8)
2023/04/19(水) 14:16:39.58ID:mDR4Tmnid (bool)null
261デフォルトの名無しさん (ワッチョイ ff79-e5FP)
2023/04/19(水) 18:22:12.39ID:oWlQU8HM0 もうnullだったら死んでくれていい
プログラムでぬらぶるってるとムカつく
いいんだよ例外でもなんでも死ねば
プログラムでぬらぶるってるとムカつく
いいんだよ例外でもなんでも死ねば
262デフォルトの名無しさん (ワッチョイ ff79-e5FP)
2023/04/19(水) 18:32:54.51ID:oWlQU8HM0 プログラムの99.998%は概ねnullになんかなんないところばっかりなのに
なんでこんなクソ構文作ったのかわからん
現場で書くと嫌われるコード
こんなもんチェックするより他にやることはいくらでもある
なんでこんなクソ構文作ったのかわからん
現場で書くと嫌われるコード
こんなもんチェックするより他にやることはいくらでもある
263デフォルトの名無しさん (ササクッテロロ Spfb-tEYI)
2023/04/19(水) 19:21:06.22ID:Yh/qVtVOp bool値に三状態あるのかw
264デフォルトの名無しさん (ワッチョイ 5f79-uE6i)
2023/04/19(水) 19:27:25.28ID:Gw9y9MAb0 ヌルヌルヌールヌル
265デフォルトの名無しさん (オイコラミネオ MM5b-baic)
2023/04/19(水) 19:28:11.01ID:ol2MoW3SM DBだと伝統的に3値だったりが当たり前
かなり問題がある作り
かなり問題がある作り
266デフォルトの名無しさん (ワッチョイ 7f7b-i286)
2023/04/19(水) 19:33:27.51ID:fW0fg9Ti0267デフォルトの名無しさん (ワッチョイ bfe9-Naft)
2023/04/19(水) 20:30:00.61ID:C4s4zrWJ0 FormアプリでForm1とForm2を作る
Form1にラベルを作る
Form2にボタン1,ボタン2を作る
ボタン1を押すとラベルに"1"ボタン2を押すとラベルに"2"を、
Form2を閉じることなく設定するプログラムを作りたいのですが
どういう作り方をすれば実現できるでしょうか。
Form2にプロパティを作りForm1で文字を受け取る方法だとForm2を閉じないと値が設定できません。
よろしくお願いします。
Form1にラベルを作る
Form2にボタン1,ボタン2を作る
ボタン1を押すとラベルに"1"ボタン2を押すとラベルに"2"を、
Form2を閉じることなく設定するプログラムを作りたいのですが
どういう作り方をすれば実現できるでしょうか。
Form2にプロパティを作りForm1で文字を受け取る方法だとForm2を閉じないと値が設定できません。
よろしくお願いします。
268デフォルトの名無しさん (ワッチョイ 7f7b-i286)
2023/04/19(水) 20:35:45.45ID:erb9d6p60269デフォルトの名無しさん (ワッチョイ bfe9-Naft)
2023/04/19(水) 22:15:32.11ID:C4s4zrWJ0270デフォルトの名無しさん (ワッチョイ 7f10-S3w6)
2023/04/20(木) 21:58:50.89ID:XyBZLb7d0 ぬるり
271デフォルトの名無しさん (ワッチョイ 4954-YWDm)
2023/04/22(土) 21:40:28.10ID:nV5+mUIN0 自作メソッドが投げる可能性がある例外の表記方法についての質問です。
ドキュメンテーションコメントの<exception>タグに、throw する可能性がある例外を表記出来ますが、
例えば下記のメソッドの場合・・・
void MyMethod(string filename)
{
//ZipFile.OpenRead() メソッドと、StreamReader.ReadLine() メソッドを使用する。
}
上記の場合、
ZipFile.OpenRead() は下記の例外を throw する可能性があります。
ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
IOException
UnauthorizedAccessException
FileNotFoundException
NotSupportedException
InvalidDataException
StreamReader.ReadLine() は下記の例外を throw する可能性があります。
OutOfMemoryException
IOException
こうなると、MyMethod() は、上記の計11種類の例外を throw する可能性があるという事になるのですが、
理想論的には、全てをドキュメンテーションコメントの <exception> に表記する必要がありますか?
そうでない場合、表記するべき例外と、そうでない例外はどういう基準で判断すればよいでしょうか?
ドキュメンテーションコメントの<exception>タグに、throw する可能性がある例外を表記出来ますが、
例えば下記のメソッドの場合・・・
void MyMethod(string filename)
{
//ZipFile.OpenRead() メソッドと、StreamReader.ReadLine() メソッドを使用する。
}
上記の場合、
ZipFile.OpenRead() は下記の例外を throw する可能性があります。
ArgumentException
ArgumentNullException
PathTooLongException
DirectoryNotFoundException
IOException
UnauthorizedAccessException
FileNotFoundException
NotSupportedException
InvalidDataException
StreamReader.ReadLine() は下記の例外を throw する可能性があります。
OutOfMemoryException
IOException
こうなると、MyMethod() は、上記の計11種類の例外を throw する可能性があるという事になるのですが、
理想論的には、全てをドキュメンテーションコメントの <exception> に表記する必要がありますか?
そうでない場合、表記するべき例外と、そうでない例外はどういう基準で判断すればよいでしょうか?
272デフォルトの名無しさん (ワッチョイ dd87-69CM)
2023/04/22(土) 22:30:09.44ID:XuPaU8GB0 >>271
めんどくさいから例外を吐くMethodを記載して、詳細はソチラでにしちゃうかな
めんどくさいから例外を吐くMethodを記載して、詳細はソチラでにしちゃうかな
273デフォルトの名無しさん (ワッチョイ 3679-VD5T)
2023/04/23(日) 00:52:29.94ID:qbQJEsvk0274デフォルトの名無しさん (ワッチョイ 66f2-mr0i)
2023/04/23(日) 09:59:39.79ID:UBkEK/lQ0 ZipFile使ってること書いてそっち参照とし、独自のは詳細書くとか?
275デフォルトの名無しさん (オイコラミネオ MMb5-RykB)
2023/04/23(日) 10:04:39.68ID:DUqm0gOHM 書いたことがない
自分で使うなら覚書として必要な範囲で
他人に提供するライブラリでも普通は書かない
使われないし必要とされてないから
常識的にそれが何をしているか想定できる場合は書かない
今だったらファイルアクセスしてますよとか引数を取りますよで利用側もある程度想像できる
標準ライブラリの例外でないものを投げる可能性があり
それに回復手段がある場合に書くぐらいなんじゃないかなと
自分で使うなら覚書として必要な範囲で
他人に提供するライブラリでも普通は書かない
使われないし必要とされてないから
常識的にそれが何をしているか想定できる場合は書かない
今だったらファイルアクセスしてますよとか引数を取りますよで利用側もある程度想像できる
標準ライブラリの例外でないものを投げる可能性があり
それに回復手段がある場合に書くぐらいなんじゃないかなと
276デフォルトの名無しさん (ワッチョイ 6610-ASru)
2023/04/24(月) 06:43:49.53ID:P+2JsUDo0 ドキュメンテーションコメントなんか書いたことないな・・・
277デフォルトの名無しさん (アウアウクー MM7d-pS66)
2023/04/24(月) 08:26:23.98ID:F+RPKNFDM ウチはコーディング規約で必須
どこも書いてるかと思ってたけど違うんだね
どこも書いてるかと思ってたけど違うんだね
278デフォルトの名無しさん (アウアウウー Sa21-ZiWf)
2023/04/24(月) 08:47:42.51ID:iy7IhEXOa 今はドキュメンテーションコメント書いたらコパイロットがコード書いてくれるんじゃね
279デフォルトの名無しさん (ワッチョイ 3679-ByXY)
2023/04/25(火) 07:51:13.18ID:kQ+fG+er0 JavadocやDoxygenってゴミにしかなんなくね?
280デフォルトの名無しさん (ワッチョイ a95f-SH/E)
2023/04/25(火) 08:17:55.28ID:wOLFytDy0 >>279
成果物のかさ増しには最適なんだよw
成果物のかさ増しには最適なんだよw
281デフォルトの名無しさん (スプッッ Sdea-8Xzj)
2023/04/25(火) 08:42:20.58ID:2JpsSRmdd 詳細設計書の雛形を自動で作ってくれる…
んだぜ
んだぜ
282デフォルトの名無しさん (ワッチョイ a5e5-ASru)
2023/04/25(火) 08:45:42.17ID:XCOYQ77g0 詳細設計してからコード書いてクレメンス
283デフォルトの名無しさん (ワッチョイ aade-RykB)
2023/04/25(火) 10:50:36.92ID:KrvjcZC00 質問なんですが、コントロールのボタン1~9のイベントハンドラを全部実行したいとき
Button1_Click(null, null);
Button2_Click(null, null);
Button3_Click(null, null);
Button4_Click(null, null);
Button5_Click(null, null);
Button6_Click(null, null);
Button7_Click(null, null);
Button8_Click(null, null);
Button9_Click(null, null);
これをもっとスマートに書く方法ありますか?
それとも20個程度ならダラダラ書いたほうがいいですか?
Button1_Click(null, null);
Button2_Click(null, null);
Button3_Click(null, null);
Button4_Click(null, null);
Button5_Click(null, null);
Button6_Click(null, null);
Button7_Click(null, null);
Button8_Click(null, null);
Button9_Click(null, null);
これをもっとスマートに書く方法ありますか?
それとも20個程度ならダラダラ書いたほうがいいですか?
284デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
2023/04/25(火) 11:03:26.95ID:h+X7r+oZ0 ViewModelも使わないような泥縄式プログラミングならダラダラ書けばいんじゃね
インスタンスを何らかの方法(前もって配列に入れるとかタグをつけるとか)でフィルタリングすればループが使えるし何ならイベントハンドラ自体一つにまとまるくらい同じことしかしてないんじゃないかとも推測できるが
インスタンスを何らかの方法(前もって配列に入れるとかタグをつけるとか)でフィルタリングすればループが使えるし何ならイベントハンドラ自体一つにまとまるくらい同じことしかしてないんじゃないかとも推測できるが
285デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
2023/04/25(火) 11:05:37.36ID:h+X7r+oZ0 あとイベントハンドラを直接呼び出すのは良くないぞ
イベントハンドラの中から実際の処理を行う関数を呼び出すように作ってイベントハンドラを他の関数から呼びだしたい時には代わりにその処理の方を呼び出すんだ
イベントハンドラの中から実際の処理を行う関数を呼び出すように作ってイベントハンドラを他の関数から呼びだしたい時には代わりにその処理の方を呼び出すんだ
286デフォルトの名無しさん (ワッチョイ 1507-ZiWf)
2023/04/25(火) 11:07:12.18ID:h+X7r+oZ0 どうしてもハンドラの方を呼び出さなきゃいけない時はButton.PerformClickな
287デフォルトの名無しさん (ワッチョイ aade-RykB)
2023/04/25(火) 12:14:00.34ID:KrvjcZC00 >>284,285,286
サンクスです、まずViewModelがわかりません。ググルとandroidやzamarinの事がヒットします。
windowsのformでプログラム作ってます。もうちょと調べてみます。
イベントハンドラの中のメソッドを呼びだすのですね、Button.PerformClickと迷ったのですが
2つの違いがいまいちわかってなくて、もらったアドバイスでもうちょと考えてみます
サンクスです、まずViewModelがわかりません。ググルとandroidやzamarinの事がヒットします。
windowsのformでプログラム作ってます。もうちょと調べてみます。
イベントハンドラの中のメソッドを呼びだすのですね、Button.PerformClickと迷ったのですが
2つの違いがいまいちわかってなくて、もらったアドバイスでもうちょと考えてみます
288デフォルトの名無しさん (スプッッ Sdea-8Xzj)
2023/04/25(火) 13:05:52.77ID:+0i9aSeod 適当なコレクションに入れてforeachでperformclickだな
289デフォルトの名無しさん (ワッチョイ aade-RykB)
2023/04/25(火) 17:08:17.65ID:KrvjcZC00 >>288
レスサンクスです
List<Button> buttons = new List<Button>();
for (int i = 1; i<10; i++)
{
Button button = new Button();
foreach (Button button in buttons)
{
button.PerformClick();
}
こんな感じでしょうか(途中で挫折した)
レスサンクスです
List<Button> buttons = new List<Button>();
for (int i = 1; i<10; i++)
{
Button button = new Button();
foreach (Button button in buttons)
{
button.PerformClick();
}
こんな感じでしょうか(途中で挫折した)
290デフォルトの名無しさん (ワッチョイ a5e5-ASru)
2023/04/25(火) 17:34:19.71ID:XCOYQ77g0 フォームに他にボタンが無いなら↓でもやれる
foreach(Control childItem in Controls) {
if(childItem is Button button)
button.PerformClick();
}
foreach(Control childItem in Controls) {
if(childItem is Button button)
button.PerformClick();
}
291デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/25(火) 17:41:31.18ID:jwlAeKCmM まずボタンから処理を分けようか?
リファクタリングでメソッドに書き直そう
private void Button_Click(object sender, Args e)
{
//ここは実際に何かやってるが仮にコメントにしてある
//
//ここまで
}
仮にこんなコードだとして
//から始まる3行を選択して右クリックすると出てくるメニュー上の方に "クイックアクションとリファクタリング" というのがあるから
それをクリックすると "メソッドを抽出する" と言うのが出てくるので選ぶ
そのあとメソッド名をつけるだけでイベントハンドラじゃなくて単純なメソッドになる
ボタンをクリックしたと言う名前じゃなくて処理にあった名前にできるしそうするべき
いちいちボタンNが何をしていたか調べたり覚えなくて済む
こういうふうにしてあちこちの処理を簡単にメソッドにできるので
処理の区切りでメソッドにしよう
処理に名前を付けて流用できるようにしよう
リファクタリングでメソッドに書き直そう
private void Button_Click(object sender, Args e)
{
//ここは実際に何かやってるが仮にコメントにしてある
//
//ここまで
}
仮にこんなコードだとして
//から始まる3行を選択して右クリックすると出てくるメニュー上の方に "クイックアクションとリファクタリング" というのがあるから
それをクリックすると "メソッドを抽出する" と言うのが出てくるので選ぶ
そのあとメソッド名をつけるだけでイベントハンドラじゃなくて単純なメソッドになる
ボタンをクリックしたと言う名前じゃなくて処理にあった名前にできるしそうするべき
いちいちボタンNが何をしていたか調べたり覚えなくて済む
こういうふうにしてあちこちの処理を簡単にメソッドにできるので
処理の区切りでメソッドにしよう
処理に名前を付けて流用できるようにしよう
292デフォルトの名無しさん (ワッチョイ aade-RykB)
2023/04/25(火) 20:49:06.41ID:KrvjcZC00293デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/25(火) 23:36:51.46ID:jwlAeKCmM >>292
これだけできるとコードの書きやすさが格段に上がるよ
メソッド内全部じゃなくてもいい
適当に切り出しても引数とかもちゃんとくくりだしてくれる
出来ない場合は理由があるのでそれも勉強になる
失敗してもアンドゥしたらいいだけだし
これだけできるとコードの書きやすさが格段に上がるよ
メソッド内全部じゃなくてもいい
適当に切り出しても引数とかもちゃんとくくりだしてくれる
出来ない場合は理由があるのでそれも勉強になる
失敗してもアンドゥしたらいいだけだし
294デフォルトの名無しさん (ワッチョイ 3abd-/HYv)
2023/04/26(水) 00:00:21.94ID:lnboBUB50 >>291
こんな機能あったんか…。知らんかった。
こんな機能あったんか…。知らんかった。
295デフォルトの名無しさん (オイコラミネオ MMb5-/HYv)
2023/04/26(水) 00:31:44.42ID:1VlSMqUTM 他にもいろいろ機能があるよ
いろいろ試してね
いろいろ試してね
296デフォルトの名無しさん (ワッチョイ f1e4-n/u1)
2023/04/26(水) 06:43:05.45ID:aS9C8tBv0297デフォルトの名無しさん (ワッチョイ 6a7f-p1wa)
2023/04/28(金) 01:40:04.13ID:EFykGfO70 ほんとVisual studioは神
298デフォルトの名無しさん (ワッチョイ ea79-lTfL)
2023/04/28(金) 01:47:14.94ID:yqQLE+sa0 それっぽい名前を付けるのが一番面倒だから
そこは処理をAIに要約させて付けて貰う
完璧だな
そこは処理をAIに要約させて付けて貰う
完璧だな
299デフォルトの名無しさん (ワッチョイ 4954-YWDm)
2023/04/28(金) 04:28:06.22ID:SQeM8rhL0 非同期メソッドを実行する時「戻り値は特に必要ないが、例外は伝えてほしい」という場合、
戻り値は適当に int とかにしても問題ないでしょうか?
理想的な方法があれば教えてください。
例:
public Task<int> SomeMethod()
{
return await Task.Run(()=>
{
try
{
//非同期で実行したいメソッド。
return 1;
}
catch
{
throw;
}
});
}
戻り値は適当に int とかにしても問題ないでしょうか?
理想的な方法があれば教えてください。
例:
public Task<int> SomeMethod()
{
return await Task.Run(()=>
{
try
{
//非同期で実行したいメソッド。
return 1;
}
catch
{
throw;
}
});
}
300デフォルトの名無しさん (ワッチョイ 6610-ASru)
2023/04/28(金) 07:28:54.39ID:dvpYRirO0 戻り値無くても例外は発生するぞ
ていうかthrowするだけならtry要らないだろ
ていうかthrowするだけならtry要らないだろ
301デフォルトの名無しさん (ワッチョイ 6663-Be6V)
2023/04/28(金) 07:38:28.05ID:4gfllXQT0 public async Task SomeMethod()
303デフォルトの名無しさん (ワッチョイ 777c-KiN+)
2023/05/02(火) 15:27:13.55ID:+P/djKKr0 >>300
以外と例外処理って勘違いしてる奴が多いんよ
例外が発生する可能性がある場所にtry catch書くべきって思ってる奴が7割ぐらい居る
正解は例外が発生した場合にリカバリー処理を書く場合に使用する
以外と例外処理って勘違いしてる奴が多いんよ
例外が発生する可能性がある場所にtry catch書くべきって思ってる奴が7割ぐらい居る
正解は例外が発生した場合にリカバリー処理を書く場合に使用する
304デフォルトの名無しさん (アウアウウー Sa1b-gncP)
2023/05/02(火) 15:48:44.54ID:k2jSiG28a リカバリー処理とは?
305デフォルトの名無しさん (ワッチョイ 777c-KiN+)
2023/05/02(火) 15:54:32.37ID:+P/djKKr0 そのままの意味どうすよ
回復や復帰を意味する言葉通り
例えば通信中に環境が悪く回線切断
例外からそれは分かるので回線が繋がりやすい場所は移動する様にメッセージを出した後に再接続して通信を続行させる
回復や復帰を意味する言葉通り
例えば通信中に環境が悪く回線切断
例外からそれは分かるので回線が繋がりやすい場所は移動する様にメッセージを出した後に再接続して通信を続行させる
306デフォルトの名無しさん (ワッチョイ 7f79-tpgI)
2023/05/02(火) 16:24:14.51ID:2rV8iq3c0 UIソースでtrycatch書くための仕組みだろ
返せる例外は複数も行けるけど1つしか想定してないからどんぶりの類
本処理中と終了処理があるような処理は想定外
終了処理は行われないで帰ってくる
厨房の工作キット
返せる例外は複数も行けるけど1つしか想定してないからどんぶりの類
本処理中と終了処理があるような処理は想定外
終了処理は行われないで帰ってくる
厨房の工作キット
307デフォルトの名無しさん (アウアウアー Sa4f-ef8y)
2023/05/02(火) 16:28:46.70ID:GVM+dlL1a リカバリー処理とは限らんでしょ
308デフォルトの名無しさん (ワッチョイ 375f-Hgfr)
2023/05/02(火) 16:48:17.59ID:4Yks9dbV0 まあ、自分の業務だけが全ての人は知見が狭くてかなわんなw
309デフォルトの名無しさん (ワッチョイ 97cf-hzXf)
2023/05/02(火) 17:26:39.90ID:ID016ee+0 復帰とも書いてるから、例外の伝播をそこで止めて通常動作に戻すこと全般を言っているんなら
大体合ってるんじゃないかな。
大体合ってるんじゃないかな。
310デフォルトの名無しさん (ワッチョイ 9f4b-gncP)
2023/05/02(火) 18:28:49.42ID:2Pbut5Rc0 独自の例外に変換することもあるのでは
311デフォルトの名無しさん (ワッチョイ 3754-wHlW)
2023/05/02(火) 18:29:31.06ID:yUli7OqN0 try catch はリカバリー処理とかユーザー通知も含めて、"例外が起きたら何かしたい" 時に使う物くらいにしか考えてなかったなぁ。
void Method() {
try {
処理
} catch (Exception ex) {
//if (この場で復旧処理したい) { 復旧処理 }
//if (メソッド呼び出し元に例外が起きたことを伝播したい) { 例えば、throw する }
//if (ログを出力したい) { ログ出力する }
//if (別のプロセスを起動したい) { 別のプロセスを起動する }
//if (その他諸々何かしたい) { その他諸々何かの処理 }
}
void Method() {
try {
処理
} catch (Exception ex) {
//if (この場で復旧処理したい) { 復旧処理 }
//if (メソッド呼び出し元に例外が起きたことを伝播したい) { 例えば、throw する }
//if (ログを出力したい) { ログ出力する }
//if (別のプロセスを起動したい) { 別のプロセスを起動する }
//if (その他諸々何かしたい) { その他諸々何かの処理 }
}
312デフォルトの名無しさん (ワッチョイ 9f7f-ExZu)
2023/05/02(火) 18:29:58.08ID:Iiod3Ljm0 相手サーバーに拒否されたとかそのままコケて欲しい時はcatchしなくて良いしな
313デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 21:03:09.39ID:N5mno8Ao0 質問いいですか?
form1からform2を呼び出して、form2からform1のbutton1をクリックしたい
public partial class Form2 : Form
{
private Form1 _form1;
public Form2(Form1 form1)
{
InitializeComponent();
_form1 = form1;
}
}
ここでform2から
_form1.button1.PerformClick(); //うまくいきます
Button selectedButton = (Button)_form1.Controls["button1"];
selectedButton.PerformClick(); //うまくいきませんnull
form1からform2を呼び出して、form2からform1のbutton1をクリックしたい
public partial class Form2 : Form
{
private Form1 _form1;
public Form2(Form1 form1)
{
InitializeComponent();
_form1 = form1;
}
}
ここでform2から
_form1.button1.PerformClick(); //うまくいきます
Button selectedButton = (Button)_form1.Controls["button1"];
selectedButton.PerformClick(); //うまくいきませんnull
314デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 21:04:43.29ID:N5mno8Ao0315デフォルトの名無しさん (ワッチョイ ff10-AZmp)
2023/05/02(火) 21:11:45.34ID:V30afgjZ0 動くけどなー
316デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 21:19:48.53ID:N5mno8Ao0 まじでっ
317デフォルトの名無しさん (ワッチョイ 3754-wHlW)
2023/05/02(火) 21:20:16.79ID:yUli7OqN0 別フォームからクリック出来たよ。
ソース全体が不明だから何とも言えないけど、
1. Form2 クラスの form1 ・ _form1 変数は、ちゃんと Form1 のインスタンスを参照出来てる?
2. 自動クリックされる Form1 のボタンは、ちゃんと Name = button1 になってる?
ソース全体が不明だから何とも言えないけど、
1. Form2 クラスの form1 ・ _form1 変数は、ちゃんと Form1 のインスタンスを参照出来てる?
2. 自動クリックされる Form1 のボタンは、ちゃんと Name = button1 になってる?
318デフォルトの名無しさん (ワッチョイ 3754-wHlW)
2023/05/02(火) 21:21:01.87ID:yUli7OqN0 間違えた。
Name = "button1"
Name = "button1"
319デフォルトの名無しさん (ワッチョイ 9f2f-g9Ql)
2023/05/02(火) 22:19:38.01ID:XpNDWH0U0 キャストってプロパティより優先順位低かったっけ?
320デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 22:21:39.83ID:N5mno8Ao0321デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 22:29:06.71ID:N5mno8Ao0322デフォルトの名無しさん (オッペケ Sr8b-/vMP)
2023/05/02(火) 22:47:23.62ID:NVQj7oowr 「うまくいかない」の内容をもう少し詳しく書くようにしよう
何も起こらないのかそれともエラーが出るのか
エラーが出るなら具体的にどんなエラーメッセージなのか
何も起こらないのかそれともエラーが出るのか
エラーが出るなら具体的にどんなエラーメッセージなのか
323デフォルトの名無しさん (ワッチョイ ff10-AZmp)
2023/05/02(火) 22:51:11.59ID:V30afgjZ0324デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 23:02:01.80ID:N5mno8Ao0 >>322
失礼しました、例外がスローされます
selectedButton.PerformClick();のところで止まってselectedButtonがnullみたいです
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'
失礼しました、例外がスローされます
selectedButton.PerformClick();のところで止まってselectedButtonがnullみたいです
System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'
325デフォルトの名無しさん (オイコラミネオ MM6b-hzXf)
2023/05/02(火) 23:06:31.60ID:HZAuKpK5M >>324
それ単純に名前ミスってるだけだよ…
それ単純に名前ミスってるだけだよ…
326デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 23:09:12.69ID:N5mno8Ao0327デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 23:12:57.82ID:N5mno8Ao0328デフォルトの名無しさん (ワッチョイ 9fde-fitb)
2023/05/02(火) 23:32:01.14ID:N5mno8Ao0 たすかりました
ありが㌧
ありが㌧
329デフォルトの名無しさん (オイコラミネオ MM6b-hzXf)
2023/05/02(火) 23:46:40.83ID:HZAuKpK5M テキストでコントロール指定したりPerformClick()使うのは最初だけだから
初心者だからなんでも使えばいい
そこから出られるのかどうか
初心者だからなんでも使えばいい
そこから出られるのかどうか
■ このスレッドは過去ログ倉庫に格納されています
