暇つぶし2chat TECH
- 暇つぶし2ch262:デフォルトの名無しさん
19/08/15 15:14:02.56 jCEAQJdF0.net
常駐するアプリを作るとき、serviceにすると何が嬉しいのですか?

263:デフォルトの名無しさん
19/08/15 15:26:23.04 nQmxjzka0.net
ログインしてなくても動く

264:デフォルトの名無しさん
19/08/15 16:03:39.12 wwJYNY5r0.net
ありがとうございます

265:デフォルトの名無しさん
19/08/15 17:15:06.30 X+hhUeCb0.net
>>255
dapperはdynamic使うのが簡単でウマーだから

266:デフォルトの名無しさん
19/08/15 18:25:05.09 jCEAQJdF0.net
>>261
インジェクション対策は?

267:デフォルトの名無しさん
19/08/15 18:41:02.43 VbDuA0j40.net
>>262
ちゃんとパラメーター変数使ってるジャン

268:デフォルトの名無しさん
19/08/15 19:29:51.78 UYxtktoid.net
>>261
cdカラムとかを指定して取り出したいなら結局クラス作った方が楽やん

269:デフォルトの名無しさん
19/08/15 20:14:41.68 BPnFBcl20.net
大文字小文字の問題とか無いのかな?
止めて変数rowをウォッチしてみてね

270:デフォルトの名無しさん
19/08/15 20:56:25.88 X+hhUeCb0.net
>>264
ケースバイでしょ

271:デフォルトの名無しさん
19/08/15 20:58:03.96 bD8BPP4C0.net
>>266
うん、だけどそれで悩んでるのは事実やん

272:デフォルトの名無しさん
19/08/15 21:46:48.94 pWdXHbkI0.net
>>251
やっぱりそうだよね。

Seleniumを使いこなせないPGがC#パーには多すぎるのが問題だな

273:デフォルトの名無しさん
19/08/15 22:36:14.06 nQmxjzka0.net
あーハイハイ

274:251
19/08/15 23:18:45.58 5MxOdPEK0.net
まあ、Ruby では、
driver.execute_script で、JavaScript(JS)のソースコードを実行できるから、
通知バーの要素を取得して、その部分を、JS で削除できるかも知れない
例えば、漏れは普段、Showroom の多くのアバターなどを、こうやって削除している
jsCode = <<'EOT'
var elem = document.getElementById('js-avatar');
elem.parentNode.removeChild(elem);
EOT
driver.execute_script jsCode

275:デフォルトの名無しさん
19/08/16 00:31:14.40 Capr2asl0.net
一人でも煩いスレ違い居座り野郎が、二人になって相互作用まで始めてしまったか。

276:デフォルトの名無しさん
19/08/16 00:40:48.73 w8wDW0z80.net
せめてjavaスレいけよ

277:デフォルトの名無しさん
19/08/16 00:47:42.08 9Iug+Ez/0.net
ん?なんでrubyの話が突然出てくるんだ?

278:デフォルトの名無しさん
19/08/16 00:56:27.81 jFKiomKf0.net
だから。相手にすんなよ。
しつこくても枯死するまで放って置けばいいのに。

279:デフォルトの名無しさん
19/08/16 00:57:25.58 Capr2asl0.net
>>273
いくらやめろと言われてもところ構わず唐突にRubyの話を始める頭のおかしい奴が、この板にいついているから。スレタイにRuby禁止と書かれているスレがいくつかあるが、コイツが原因。

280:デフォルトの名無しさん
19/08/16 00:58:13.28 2i9/2j960.net
C#っつーかプログラミング言語一般の話になっちゃうかもしれないんですけど
勉強してて例外のところに差し掛かったんですけどめっちゃ色々種類あるじゃないですか
んでもって例えば関数一つ作るにしても考えようによってはほんと沢山の種類の例外が発生する可能性がありますよね
そういうのをとにかく可能性が少しでもあれば例外をスローするようにしてたらコードが例外ばっかになっちゃう気がします
書く例外と書かない例外の境界線はどこにあるのでしょうか

281:デフォルトの名無しさん
19/08/16 00:58:14.57 Capr2asl0.net
>>274
すまん、その通りだな

282:デフォルトの名無しさん
19/08/16 01:08:02.04 G0Kx7mvIa.net
>>276
よくわからん理屈だな
仮にその例外を「書かない」と判断したとして、その「例外的な状態」を例外の代わりにどう処理するつもり?
放置しても問題なく動き続けられるorその場で適切な対処をして回復できるなら、そりゃ例外投げるよりその方がいいに決まってる

283:デフォルトの名無しさん
19/08/16 01:13:52.65 Capr2asl0.net
>>276
ライブラリ関数に渡す引数が正しくないとかのように、自分が書いているコードが正しくない場合に発生する例外、逆に言えば正しいコードを書けば発生しない例外は基本的にその場ではいちいちcatchしない。
ただし完全にバグがないということを保証するのは困難なので、プログラムの上流でまとめてcatchして何らかのメッセージを出すなどした方が良い。どう対処すべきかはそのシステムに求められる要件次第だけど。
ファイルにアクセスできないとか、ユーザからの入力データが正しくないことにより発生するような例外とか、自分のコードの外部の要因で発生する可能性のある例外は、その都度catchして適切に対処する必要がある。

284:デフォルトの名無しさん
19/08/16 01:51:17.26 XNgAzUDc0.net
四則演算やっても
オーバーフローもゼロ除算もあるしね
一番上のcatchでまるっと処理したほうがええ

285:デフォルトの名無しさん
19/08/16 02:16:34.36 3ldAil1N0.net
>>276
その処理内で対処できるなら投げない
できないなら例外なげる
>>279-280
キャッチする話じゃなくて投げるほうの話だろ
まあ、キャッチも同じ考え方で、自分で対処できる例外はキャッチする
それ以外はそのまま上位へ
今はこういう考え方が主流だと思う

286:デフォルトの名無しさん
19/08/16 02:17:58.68 KW3/fLy3a.net
>>276
そんなの手を動かさずに机上で考えてるからそうなるだけw
処理できない問題は(基本的には)例外を投げて呼び出し側に通知するしかない。
処理できない例外は投げるしかない。
処理できないのにcatchして握りつぶしてよい例外なんかない。
何が難しいの?

287:デフォルトの名無しさん
19/08/16 05:58:38.34 RrHjcCxL0.net
初心者マークの人へのアドバイスとしては
例外をthrowするケースは
・事前条件が崩れる場合、例えば引数がおかしい場合や処理の準備が整わない場合
・処理に失敗したことを伝える場合
まずはこのあたりを基準に
逆にcatchはむやみやたらにしてはいけないし、特に握り潰してはいけない
他人のソースをたくさん読んで、たくさん考えて書くしかないよね

288:デフォルトの名無しさん
19/08/16 07:20:17.23 z6Pxs9AVa.net
javaみたいに「このメソッドはこんな例外を投げるから必ずtry-catch書けよ」ってできなかったっけC#

289:デフォルトの名無しさん
19/08/16 07:41:23.99 G0Kx7mvIa.net
>>284
Javaの最大の失敗の一つだね
C#に採用されなかったのはもちろん、Kotlinですら省かれた

290:デフォルトの名無しさん
19/08/16 09:30:31.26 1KF8kPqD0.net
そもそもチェック例外を採用した言語ってJava以外にあったか

291:デフォルトの名無しさん
19/08/16 09:33:04.09 w8wDW0z80.net
>>276
動作止めたくないなら例外拾って全部ログに書き込む

292:デフォルトの名無しさん
19/08/16 11:35:21.61 16ocBcE+p.net
全部のケースを全部継続可能か不可能か判断してケース分けするに決まってんだろ。
甘えんな

293:デフォルトの名無しさん
19/08/16 11:43:27.15 i2ShkSLcM.net
俺はtry入れないでまず作って
例外が頻発する箇所に追加していく感じ
最初から丁寧に入れていくのは時間の無駄が多い

294:デフォルトの名無しさん
19/08/16 12:43:54.88 vQM55/5Pa.net
いやとにかく
(1) 例外を投げるかどうか
(2) 例外をcatchするかどうか
こんなことで悩むなんてありえないよ。悩む理由がない。
悩みどころなんて、どの例外を投げるかの選択、あるいは例外をどの程度
場合分けするか、ぐらいしかない。




295: これは例えば、引数が変だった場合にとにかくいつでもざっくりArgumentExceptionを投げて済ますか、 引数がどう不適切なのか、細かく場合分けしてより適切な例外を投げるようにするかの選択 余談だけどこういうと怒る人もいるかもしれんが、個人的には例外の場合分けなんて 本当はどうでもいいと思ってるw 役に立つことはほぼないwほとんど場合プログラマの自己満足だw そのコードを見られる場合にはね。(だから他人が使うライブラリを書いてる場合は別問題)



296:デフォルトの名無しさん
19/08/16 12:50:25.25 vQM55/5Pa.net
あと、そもそもメソッドのデザインとして
例外を投げる代わりにout引数か戻り値でnull(あるいは例外オブジェクト)
を返すって選択肢もあるから、そこで迷うってケースもないことはないけどね。
呼び出し側でいちいちtryブロックを書く必要があるのは鬱陶しい、
って需要もあるから

297:デフォルトの名無しさん
19/08/16 12:59:06.06 mZqFzvyqa.net
キモいRuby厨はスレ追い出されてC#スレに引っ越した

298:デフォルトの名無しさん
19/08/16 13:33:31.65 w8wDW0z80.net
>>289
たぶん環境が緩いというか品質が知れるわ

299:デフォルトの名無しさん
19/08/16 14:56:57.30 /nFnP4zmd.net
>>291
out使うのはなぜ?

300:デフォルトの名無しさん
19/08/16 15:10:09.14 Boqt1xFK0.net
outでエラーコード返すのでは?

301:デフォルトの名無しさん
19/08/16 15:19:40.41 s9O3qxdqd.net
昔はout使う構文が嫌いだったけど、7.0でインライン宣言出来るようになってからそうでもなくなった

302:デフォルトの名無しさん
19/08/16 16:31:30.73 vdJZcXlx0.net
ValueTupleにエラーコード入れて返すじゃ駄目なの?

303:デフォルトの名無しさん
19/08/16 16:34:34.90 vQM55/5Pa.net
>>294
TryParse的な物を想定して書いたけど>>291じゃ端折り過ぎて意味不明だね申し訳ない
戻り値nullは(メソッドじゃないけど)as的な物を想定
例外オブジェクトをout変数で返すのはたぶんやってる人はほどんどいないけど、
tryブロックが嫌いなら場合によっては便利かも

304:デフォルトの名無しさん
19/08/16 16:37:56.56 AwRYym3H0.net
>>272
JavaとJavaScriptは別ものだ
あほ
Slenium以前の問題

305:デフォルトの名無しさん
19/08/16 16:52:07.81 /nFnP4zmd.net
>>298
タプルで返せばよくない?

306:デフォルトの名無しさん
19/08/16 17:53:53.26 9StEh2pLd.net
例外はログ拾う時に絶望したくないから適切に投げるなぁ。
どうでも良いという論調は作るだけで保守しない人の発想みたいで少し嫌かもしれん。
アプリケーションのロジックをバッチでも使いたい、みたいな時に、毎度戻り値を検証するんじゃなくてバッチの一連のトランザクション自体落としちゃいたい時に二度手間な気がするんだが、その辺どう作ってるんだろう?

307:デフォルトの名無しさん
19/08/16 19:27:37.17 16ocBcE+p.net
>>301
二度手間と思うのは一人で全部コード書いてるから。

308:デフォルトの名無しさん
19/08/16 19:30:21.63 O2kbbLouM.net
>>299
え?なぜjsを指定してると思うの?
元々javaのつもりで書いてるんだけど。
沸いてるの??

309:デフォルトの名無しさん
19/08/16 21:32:15.51 HNLZHpWT0.net
>>303
javaの拡張子は【.java】だよ
【.js】は、思いっきりJavaScriptの拡張子
少しググって勉強してね

310:デフォルトの名無しさん
19/08/16 23:41:19.50 AADFbgN80.net
プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう

311:デフォルトの名無しさん
19/08/17 00:34:58.82 1HSNgy8G0.net
Seleniumって便利だな
もっとユーザが増えてほしい

312:デフォルトの名無しさん
19/08/17 02:16:51.47 EsYhqRXq0.net
>>304
え?全然噛み合わない。
なにこのアスペ

313:251
19/08/17 02:31:35.40 fYRni8gj0.net
Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、
ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した!
それで、Rails 6 では、
DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、
テストを複数CPU コアで、並列実行する機能が実装された!

314:デフォルトの名無しさん
19/08/17 10:48:29.26 uGEbzf6ra.net
気狂いしかいねーのかよ

315:デフォルトの名無しさん
19/08/17 12:36:57.19 zUPT7dbd0.net
見てわかんねーのか

316:デフォルトの名無しさん
19/08/17 13:25:59.90 Mqg+a2XP0.net
暑さで脳味噌が溶けちまったんだろう

317:デフォルトの名無しさん
19/08/17 14:35:53.37 sCIOh4/p0.net
なんでRubyスレで言わねえんだ?

318:デフォルトの名無しさん
19/08/17 15:08:20.60 BwzrwDPv0.net
>>303
なんでJavaのつもりで書く必要があったの?

319:デフォルトの名無しさん
19/08/17 15:55:56.68 qUgpJGd70.net
>>307
あんたの272の近辺にはJavaの話は全く出てきていないが、もしかするとRubyがJavaだと思った?

320:デフォルトの名無しさん
19/08/17 19:21:30.41 lWdyvSQl0.net
エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。
ほんとこれぐらいもエスパーできなきゃアホやろ

321:デフォルトの名無しさん
19/08/17 21:04:14.52 qUgpJGd70.net
それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」
彼にとってサーバーサイドの言語は全部Java
ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる

322:デフォルトの名無しさん
19/08/17 22:31:29.74 2lsOlPOTd.net
>>315
それはあまりにも苦しい擁護だな

323:デフォルトの名無しさん
19/08/17 22:32:06.22 fWrg11mTM.net
seleniumがjavaで書かれてるからじゃないの
>>236->>238のC++云々からの流れかと思ったけど

324:デフォルトの名無しさん
19/08/17 22:34:51.12 8QP5rwWB0.net
KeyValuePair c=func1();
cをnull判定できないんですがどうしたらいいですか?
Myclass c=func2();
の場合、null判定できます。
クラスは出来て、KeyValuePairは出来ないのは何故ですか?

325:デフォルトの名無しさん
19/08/17 22:35:45.47 1som7JJwa.net
>>319
C# クラス 構造体
でググれ

326:デフォルトの名無しさん
19/08/17 22:37:54.74 RvVfsurb0.net
KeyValuePairにnullなんて入らないからな

327:デフォルトの名無しさん
19/08/17 23:10:53.90 u5xmISorM.net
>>314
以後アスペはNG

328:デフォルトの名無しさん
19/08/17 23:12:11.34 u5xmISorM.net
>>316
流石に頭が悪すぎるのでこれ以上会話するのは不可能

329:デフォルトの名無しさん
19/08/17 23:22:57.32 w7ZVAy9F0.net
>>319
func1をTryParseみたいにbool func1(out KeyValuePair c)にして値入れたくないときはfalseを返すようにしたら?
構造体にnullは入れられないし、どうせそのあとnullで分岐するでしょ

330:デフォルトの名無しさん
19/08/17 23:30:37.14 u5xmISorM.net
>>316
先走った場違いな発言を認めたくなくて必死過ぎ、こーゆう使えない部下は直ぐに切るからこいつは低収入確定

331:デフォルトの名無しさん
19/08/17 23:35:04.26 BwzrwDPv0.net
>>319
KeyValuePair?
を返すようにしたらいい

332:デフォルトの名無しさん
19/08/17 23:36:59.53 +vBKVSmmM.net
>>325
無職のおっさんに言われてもなぁ

333:251
19/08/17 23:47:28.51 fYRni8gj0.net
そりゃ、C#・Java は、静的言語で同じだから、
静的言語になれているなら、Selenium の話は、Java で聞くのがよい
動的言語なら、Ruby, Python で聞けばよい
Seleniumデザインパターン&ベストプラクティス、2015、オライリー
これは、Rubyでテストを書いた本
ウェブ系・HTML は基本、Ruby。
まあ、Java のSelenium の本も出てるけど
Java は、Spring Boot か?
動的言語のGroovy じゃないのか?

334:デフォルトの名無しさん
19/08/18 01:25:10.35 KlRCzn4x0.net
javaの話が出てきても勘所がないから検討違いな粘着になるんだよな
Seleniumについて知識があれば文献的に充実してるのはjavaだろうに

335:デフォルトの名無しさん
19/08/18 03:58:12.87 9i6q0zGn0.net
c#からc#をインタプリタで実行できるライブラリってありますか?

336:デフォルトの名無しさん
19/08/18 06:08:49.00 t6n5brFa0.net
>>330
URLリンク(ufcpp.net)
みたいな話か?

337:デフォルトの名無しさん
19/08/18 13:41:29.71 +4zzAGlV0.net
WinForms で質問です。
標準の Form から継承した MyForm を abstract で作りました。
この MyForm は abstract なのでデザインで開けません。
(ここまでOK)
MyForm をもとに SubForm なるものを継承して作りました。
これには abstract は付けていないのですが、これもまたデザイナで開けません。
あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。

338:デフォルトの名無しさん
19/08/18 13:43:21.22 +3q0UZxZ0.net
Visual Studio .NET (2002) から続く仕様だよ

339:デフォルトの名無しさん
19/08/18 13:45:24.63 jp7+H4+aM.net
.NETではフォームの継承は推奨されていません
共通化したい場合はユーザーコントロールを使用してください
なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません

340:デフォルトの名無しさん
19/08/18 13:51:36


341:.77 ID:+4zzAGlV0.net



342:デフォルトの名無しさん
19/08/18 13:57:02.56 ET6qk6jL0.net
うちは自社開発企業だがFormsはとっくの昔に淘汰された
Formsで作ってたアプリは全部WPFで作り直した

343:デフォルトの名無しさん
19/08/18 14:04:52.38 APnDI8yA0.net
visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと
System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。'
の様なエラーが出て止まる様になりました
しかし出来たプログラムをふつうに動かす分には異常ありません
今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています
これは何が原因でしょうか?

344:デフォルトの名無しさん
19/08/18 14:21:30.88 /RKifLkIa.net
>>335
騙されたらあかんw
継承後のフォームもちゃんとデザイナで開けるし
コントロールを追加したりいろいろ出来るよw
フォームの継承なんて10年以上やってなかったが
今実際試して確認したから間違いない

345:デフォルトの名無しさん
19/08/18 14:29:19.80 MLAzMixE0.net
>>337
先日MSがWindowsUpdateでやらかしたのが原因で、結構話題になっているから検索すると見つかる
「windowsupdate vb」 で

346:デフォルトの名無しさん
19/08/18 15:44:26.69 +4zzAGlV0.net
>>338
「abstract な継承元から継承すると、継承先フォームがデザイナで開けない」
という意味でしたけど、こちらだと VS2019 でも叱られてしまいます。。

347:デフォルトの名無しさん
19/08/18 15:45:05.69 +4zzAGlV0.net
継承元が abstract じゃない単純なファームの継承だったら、まったく問題ありません。

348:デフォルトの名無しさん
19/08/18 17:17:03.03 zvOpWkeBd.net
>>334
終了なんかしてないよ

349:デフォルトの名無しさん
19/08/18 17:55:07.39 /RKifLkIa.net
>>340
なるほど。
abstractにこだわる必要が本当にあるのかなとも思うけど、
何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。
(abstractメンバーはもちろん書けないけど)
これならそういう不具合は起こらないっぽい

350:デフォルトの名無しさん
19/08/18 18:33:20.50 5+yaTAKE0.net
蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。
たぶんVPNとか使わわんだろうし。
俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。

351:デフォルトの名無しさん
19/08/18 21:26:51.68 37ku1J740.net
Keyvaluepairの.Keyをnull判定したら
nullできました。
構造体だけどnull判定できましたが??
keyvalueopair本体はできないけど
KeyまたはValueはnull判定できました。
何故???まぁ良かったんですけど

352:デフォルトの名無しさん
19/08/18 21:29:43.77 jp7+H4+aM.net
それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない
直行する問題の分離ができない人はプログラミング向いてないよ

353:デフォルトの名無しさん
19/08/18 21:32:13.83 DxNAHPOT0.net
構造体はnullにできないからKeyValuePair?使えって言ってんのに

354:デフォルトの名無しさん
19/08/18 21:33:54.95 DxNAHPOT0.net
言っとくけど「?」は文字化けじゃないぞw

355:デフォルトの名無しさん
19/08/18 21:37:51.98 37ku1J740.net
>>346
ようはList<KeyValuePair<string,double>>
"レタス" 100
"キャベツ"120
"トマト" 120
こういうリストで、ピーマンって探すと
Keyがnullになってくれたので、良かったです。
KeyValuepairがnullじゃないのが不思議ですが
null判定できてよかった

356:デフォルトの名無しさん
19/08/18 21:46:55.40 DxNAHPOT0.net
構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう
ピーマンを探すときのList.FirstOrDefault()の戻り値は
KeyValuePairをデフォルトコンストラクタで初期化したものだよ

357:デフォルトの名無しさん
19/08/18 21:48:35.09 FVnfIX0p0.net
>>349
keyvaluepairは構造体
構造体にはnullが存在しない
構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる
君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ
構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ
まぁintだって構造体だから全部避けるなんてことは無理だけど

358:デフォルトの名無しさん
19/08/18 22:03:37.75 0nN/LwEb0.net
くどくて性格が悪そうな文章だ

359:デフォルトの名無しさん
19/08/18 23:28:35.24 r1LRT6EBa.net
listに入れるならdictionaryでいいんじゃないか…?とか話を一切聞いてなかったりとかkeyvalue君のレス見てるといらつくし
説明してあげる>>351は優しいだろ

360:デフォルトの名無しさん
19/08/19 00:48:43.25 ODFt4ofXM.net
>>349
null返ってきたのはkeyの型(string型)の初期値がnullだからなんでねか?

361:デフォルトの名無しさん
19/08/19 02:37:59.55 s7+bDgX20.net
>>327
きも

362:デフォルトの名無しさん
19/08/19 07:49:38.46 2nNI8r3od.net
>>349
ピーマン探してnullが帰ってくるのはおかしいだろ。
ピーマン探したら見つからないのが正しくないか?

363:デフォルトの名無しさん
19/08/19 08:07:23.07 D7o3OMEzM.net
ループ作ったやつ次第のような?

364:デフォルトの名無しさん
19/08/19 10:35:33.11 VzpEDBAc0.net
Form1以外のクラスでlistboxに入力したいのですが
他クラスで入力する方法って望ましくないのですか?
他に方法はあるのでしょうか?

365:デフォルトの名無しさん
19/08/19 10:48:05.33 Le9xiHCt0.net
MVVMなら他クラスで用意するのが普通。
INotifyPropertyChangedとObservableCollectionでばっちりよ

366:デフォルトの名無しさん
19/08/19 10:55:08.87 QArCM+jpp.net
>>356
松茸採りに行っても見つからなかったらバスケットは空で帰って来るしか無いだろ?

367:デフォルトの名無しさん
19/08/19 10:55:52.73 QArCM+jpp.net
でもバスケットはあるから、バスケットの中の松茸の数がゼロになるんだよね?

368:デフォルトの名無しさん
19/08/19 11:52:38.83 2nNI8r3od.net
バスケットが空なのと、バスケットにnullが入ってるのは違うんじゃねえかな?
参照型は瓶と水みたいな感じで、瓶だけ持って帰ってこれても、
値型みたいな、それ単体が実体のものは言うとおり松茸みたいなもんで、取りにいってなかったら何も持って帰って来れないと思うが。
無理矢理何か持たせるのがFirstOrDefaultで、坊主だった親父がとりあえず当たり障りのないものを魚屋で買って帰るようなもんでは?
FirstOrDefaultは無かったときにnullを返すためにあるんじゃないんだから。
ちゃんとチェックしてから取ったほうがいいと思うよ。

369:デフォルトの名無しさん
19/08/19 12:00:12.26 ODFt4ofXM.net
ちゃんとチェックしてからとるならFirst()でよくね?

370:デフォルトの名無しさん
19/08/19 12:01:25.55 9Ob07fGvd.net
どうでもいい自分なりの思想を長々と書く人だね

371:デフォルトの名無しさん
19/08/19 12:07:05.62 ZYeDXrpNM.net
ILで説明してくれ

372:デフォルトの名無しさん
19/08/19 13:23:05.09 VzpEDBAc0.net
>>358なんですが誰かお願いします
別クラスでテキストボックスとかいじるのって普通のやり方ではないん


373:でしょうか?



374:デフォルトの名無しさん
19/08/19 13:27:26.75 ERfcd1se0.net
>>359が返してくれてるだろ

375:デフォルトの名無しさん
19/08/19 13:34:49.71 eHF4rC4A0.net
別クラスでいじるって、
class Hoge {
public void SetText(TextBox textBox, string text) { textBox.Text = text; }
}
みたいな?
コントロールを外部に渡すというのはまあ一般的ではないな

376:デフォルトの名無しさん
19/08/19 13:36:41.01 VzpEDBAc0.net
>>359
返してくださったのはありがたいんですが
その3つの単語全て知らなくて、ググってみても高度すぎてわかりません
コンソールアプリケーションをフォームアプリケーションに移植しようとしているのですが
Console.Write()で出力していたものをlistBoxやtextBoxに出力したいのですが出来なくて困っております
どうかアドバイスお願いします

377:デフォルトの名無しさん
19/08/19 13:44:13.47 9Ob07fGvd.net
外部でstringの配列なりListなり作った上でそれを
ListBox.DataSourceプロパティにセットすればいいんじゃないの

378:デフォルトの名無しさん
19/08/19 13:56:34.58 eDOlyF+5a.net
>>369
■ 選択肢1
FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを
LogForm.AddToLog
■ 選択肢2
Console.WriteLineを、記録する文字列を通知するイベントに置き換える。
Formはそのイベントを拾ってListBoxに表示
後者を推奨
基本的にUIの参照を握らせるのは悪い手

379:デフォルトの名無しさん
19/08/19 14:04:49.07 VzpEDBAc0.net
移植したいコンソールアプリ
class Program
{
static void Main(string[] args)
{
var op = new Output();
op.MainProcess(400);
Console.Read();
}
}

public class Output
{
public override int MainProcess(int count)
{
for (int col = 0; col < count; col++)
Console.Write(col);
}
}

380:デフォルトの名無しさん
19/08/19 14:06:13.39 VzpEDBAc0.net
作ってみたフォームアプリ
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
var op = new Output();
op.MainProcess(400);
}
}

public class Output
{
public override int MainProcess(int count)
{
for (int col = 0; col < count; col++)
listBox1.Items.Add(col);//←ここが動かない
}
}
こんな感じです
>>371
ありがとうございます。さっそく試してみます

381:デフォルトの名無しさん
19/08/19 15:32:03.08 ERfcd1se0.net
なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ
リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから

382:デフォルトの名無しさん
19/08/19 16:32:24.93 VzpEDBAc0.net
簡略化して書いていますが凄い長い計算なので計算中でもプログラムが反応する様にbackgroundWorkerにしています
backgroundWorkerかでなくとも、他クラスからフォームをいじるということが出来なくて困っています

383:デフォルトの名無しさん
19/08/19 17:09:34.09 2nNI8r3od.net
普通にinvokeしなよ。

384:デフォルトの名無しさん
19/08/19 17:49:40.07 VD+/iXFd0.net
>>375
1.他のフォームからコントロールを操作する
URLリンク(dobon.net)
2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する
URLリンク(dobon.net) またはInvoke
今の段階では1+2をやりたいんだよね
設計的なものに口だすのは良くないけど参考までに
>凄い長い計算なので計算中でもプログラムが反応する様に
ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに
BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさ


385:せてもいいんじゃないの



386:デフォルトの名無しさん
19/08/19 17:55:50.15 V7QYb24CM.net
>>366
ログ出したいん?
なんかプロパティのフラグ立てる必要なかったっけ?

387:デフォルトの名無しさん
19/08/19 18:04:30.50 V7QYb24CM.net
関係なかった
自分が昔出なかったのは
AppendTextしてなかったからだったw
すまんかった

388:デフォルトの名無しさん
19/08/19 20:31:39.57 VzpEDBAc0.net
Invoke調べてみました。いけそうな気がしますが書き方が難しいです
上記のコードの場合どのように記述すれば良いのでしょうか?

389:デフォルトの名無しさん
19/08/19 20:43:11.70 y72D5AUNp.net
>>380
ここおススメやぞ
URLリンク(blogs.msdn.microsoft.com)

390:デフォルトの名無しさん
19/08/19 20:46:44.95 cJsYlnhia.net
パッと見で適当だけど、formにコントロールの変更記述して、コールバック登録してtaskはしらせればいいの違うのか?invokeは当然

391:デフォルトの名無しさん
19/08/19 21:00:04.04 Vps+pUHe0.net
>>380
delegate用のメソッド作ってdelegateにセットしてinvoke
URLリンク(www.atmarkit.co.jp)

392:デフォルトの名無しさん
19/08/19 22:54:50.46 aQCsW5pK0.net
doubleって整数のほうに偏りがあったら
小数部分は短い精度になるんですが、これ何とかなりませんか?
doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww
989~~~132.1235212596  算出結果
989~~~132.1235312314 正解
え???????????
ちょwwwwww
助けてください

393:デフォルトの名無しさん
19/08/19 23:06:59.10 eDOlyF+5a.net
>>384
何を言ってるか人に分かるように書かないと誰も答えようがないよw
一般論として、演算誤差を累積させずに
演算可能かどうかはどういう演算をしてるかによるので、
具体的な処理が分からないと何とも言えん

394:デフォルトの名無しさん
19/08/19 23:27:14.16 9Ob07fGvd.net
decimal型使えば

395:デフォルトの名無しさん
19/08/19 23:36:21.05 0KlGy2IO0.net
>>384
浮動小数点とはそういうもの
小数点以下何桁かではなく全体で何桁か

396:デフォルトの名無しさん
19/08/19 23:57:36.54 0eZQgVij0.net
分数型クラスを自分で作ってとっとけ

397:デフォルトの名無しさん
19/08/19 23:59:07.58 HKOIeNMl0.net
Seleniumを極めよう

398:デフォルトの名無しさん
19/08/20 00:07:25.79 VMXKYR4od.net
Form1, Form2, CounterForm があります。
CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか?
やりたいこと
5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething();
CounterForm と Form1 の部分はできているのですが、
複数class間で通知する方法がよくわかりません。

399:デフォルトの名無しさん
19/08/20 00:22:58.41 sL7gwS880.net
>>390
var f1 = new Form1();
var f2 = new From2();
foreach(var i in Enumerable.Range(0, 5).Reverse())
{
 await Task.Delay(1*1000);
 if(0 == i)
  f1.DoDomething();
 // f2?
}
Form1とForm2のメソッド呼び分け条件を提示して。
あと
>複数class間で通知する方法がよくわかりません。
の意味が分からないんでもう少し詳しく

400:デフォルトの名無しさん
19/08/20 01:06:30.58 yjnOK/Bv0.net
「通知」…もし表示済みのフォームをあとからいじりたい場合、
public static class static1 {
 public static form1 form1; //スタティッククラスのフィールドを用意して、
-------------------------------------
public partial class form1 : Form {
public form1() {
 static1.form1 = this; //各自のインスタンスを各自のコンストラクタで設定しておく
-------------------------------------
public partial class CounterForm : Form {
public void hoge() {
try {
 Exception er = null;
 this.Invoke( (MethodInvoker)delegate { //デリゲートせずに外からフォームをいじるとエラーになることがある
  try {
   static1.form1.DoSomething(); //スタティッククラスのフィールドを経由すると表示済のものがいじれる
  } catch( Exception e ) { er = e; } //ちなみにデリゲート内のエラーは外側でキャッチできないので、
 } );
 if( er != null ) { throw er; } //変数を経由して外側でスローする

401:デフォルトの名無しさん
19/08/20 01:15:05.72 zheL5RcIa.net
>>390
Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、
親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を
握るのはあんまり良くない。
原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。

402:デフォルトの名無しさん
19/08/20 07:52:56.91 yjnOK/Bv0.net
UIと関係あるからフォームなんだろうけど…
非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される
なんてことはよくある
書式設定的なのも別フォームから別フォームをいじるわけだし
前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか

403:デフォルトの名無しさん
19/08/20 09:26:58.30 +NAZ1HN+M.net
フォームと無関係な~って書いてあるぞ
そんなことより全角半角がきもい

404:デフォルトの名無しさん
19/08/20 12:03:48.15 NghMzgaN0.net
対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。
この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、
DLL の中はどっちで動くのでしょうか?
たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして
これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で
4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。

405:デフォルトの名無しさん
19/08/20 12:10:21.33 mC8iPjWhd.net
自作DLL内でDataGridViewの参照を特定バージョンにしておけば4.0になるしそうじゃなければ4.8

406:デフォルトの名無しさん
19/08/20 12:17:12.47 NghMzgaN0.net
自作DLL 側の System.Windows.Forms を見たら
特定バージョン:false
になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。
Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。

407:デフォルトの名無しさん
19/08/21 00:27:12.96 7whQ/iRu0.net
あ、間違えた
× this.Invoke( (MethodInvoker)delegate {
〇 static1.form1.Invoke( (MethodInvoker)delegate {
(thisは自フォーム内のマルチスレッド部分のソースだった)
カウントダウンにマルチスレッドが必要とは限らんが
むしろモーダルだったり
でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい
クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API)
メッセージ、つまり「通知」

408:デフォルトの名無しさん
19/08/21 00:57:19.98 CGK7jfA0d.net
>>392
解答どうもありがとうございます。
event かデリゲートで解決できそうです。
// Form1
private void CountDownBtn_Click(object sender, EventArgs e) {
var countdownForm = new MYCountDownForm();
// 4 3 2 1 0と表示してから、下に行きたいが、
// これだとカウント 0 を待たずにすぐ下に行く。
countdownForm.Show();
// このクラスのいろいろな処理
}

409:デフォルトの名無しさん
19/08/21 01:36:11.80 7whQ/iRu0.net
>>400
そっちかw
そっちは「モーダルフォーム」でググると出てくると思う
その方が普通に基本

410:デフォルトの名無しさん
19/08/22 16:28:36.46 tih7LC2d0.net
APIが公開されていなくてもスクレイピングして非公開websoketに接続したいのですが、
解析からトークンなど必要なheader情報取得すればできるものですか?

411:デフォルトの名無しさん
19/08/22 16:50:43.33 xQsiKIbM0.net
出来るけど利用規約読め
API経由だとセーフで
API経由しないと逮捕とか書いてあるから

412:デフォルトの名無しさん
19/08/22 16:57:22.84 erkZnaOI0.net
>>402
URLリンク(elaws.e-gov.go.jp)

413:デフォルトの名無しさん
19/08/22 17:10:49.32 NpAwFZ6qM.net
>>404
条文ぐらい示してやれよ

414:デフォルトの名無しさん
19/08/22 17:59:59.30 90PkXrDL0.net
色んなところで迷惑なヤローだな

415:デフォルトの名無しさん
19/08/22 21:54:01.43 rNXeNA230.net
>>402
非公開だろうがクライアント側で処理してるのには変わりないんだから
お前が本当にブラウザになり切れればやれるよ
単純に能力と手間の問題だ

416:デフォルトの名無しさん
19/08/22 22:05:00.16 yaxmcT7W0.net
この質問結構前からいたるところで見る気がするんだけどただのマルチ?

417:デフォルトの名無しさん
19/08/22 23:55:52.03 W1llczT4d.net
>>400 >>401
とりあえず自力でできたのでソース抜粋 1
// Form1 呼び出し側
private void CountDownBtn_Click(object sender, EventArgs e){
var countDownForm = new MYCountDownForm(7);
countDownForm.ZeroReached += OnCounterZeroCallBack;
countDownForm.Show();
}
// コールバック
private void OnCounterZeroCallBack(Object sender, DestReachedEventArgs e){
// UI 更新
}

418:デフォルトの名無しさん
19/08/23 00:00:27.51 RwBPjFxxd.net
ソース抜粋 2 // MYCountDownForm
private System.Windows.Forms.Timer countDownTimer;
public int timeLeft;
public delegate void ZeroReachedEventHandler(Object sender, ZeroReachedEventArgs e);
public event ZeroReachedEventHandler ZeroReached;
void Timer_Tick(object sender, EventArgs e){
if (timeLeft >= 1){
timeLabel.Text = this.timeLeft.ToString();
timeLeft--;
}
else if (this.timeLeft <= 0){
timeLabel.Text = this.timeLeft.ToString();
var args = new ZeroReachedEventArgs();
args.TimeReached = DateTime.Now;
OnDestReached(args);
this.Close();
}
} // END Timer_Tick
protected virtual void OnZeroReached(ZeroReachedEventArgs e){
var handler = ZeroReached;
if (handler != null){ handler(this, e); }
}
}
public class ZeroReachedEventArgs : EventArgs {
// コンストラクタないけどいいの?
public DateTime TimeReached { get; set; }
}

419:デフォルトの名無しさん
19/08/24 00:16:35.07 EZ15JXYo0.net
アホな質問ばっかですいません
光速の計算をしたいんですが、doubleでは無理ですか?
decimalは使いません
お願いします。小数点以下が信用できません。

420:デフォルトの名無しさん
19/08/24 00:22:03.18 ka7Yl/470.net
>>411
お前さんが使おうとしている計算方法や欲しい精度とか示さんと答えられんだろうよ

421:デフォルトの名無しさん
19/08/24 01:21:02.23 g8XGZa5Z0.net
>>411

422:デフォルトの名無しさん
19/08/24 08:41:25.65 VP6gB9DD0.net
質問いいですか、クラスの処理の途中経過をTextboxのコントロールに送りたいのです
public partial class Form1 : Form
{
Class1 class1 = new Class1();
}
class Class1
{
public Class1()
{
Form1.Textbox1.AppendText("Class1を実行しています");
}
}
このようにしてもForm1のインスタンスがないから実行できません
みなさんはクラスのログなどをテキストボックスに送るとき、どう書かれてますか?

423:デフォルトの名無しさん
19/08/24 09:03:40.17 BNVmeU2m0.net
>>414
public partial class Form1 : Form
{
 public TextBox Textbox1;
 Class1 class1 = new Class1(this);
}
class Class1
{
public Class1(Form1 fm)
{
 fm.Textbox1.AppendText("Class1を実行しています");
}
}
またはFom1のなかに
public void appenttext(string st)
{
 Textbox1.AppendText(st);
}
としてClass1から呼び出す

424:デフォルトの名無しさん
19/08/24 15:23:44.45 VP6gB9DD0.net
>>415
レスさんくすです
上の方法でうまくいきました
クラスからコントロールを操作ってあまり使わない、というか推奨されてないのかな?

425:デフォルトの名無しさん
19/08/24 15:40:00.64 glPHIee0p.net
コントロールは何かを操作する為の機能なんだから、
普通はその操作する何かを直接操作するだろ?

426:デフォルトの名無しさん
19/08/24 15:45:48.43 BNVmeU2m0.net
>>416
インスタンスをどう指定していいかわからないんじゃなかったのか
親子関係にあるウィンドウでの操作はいろんなアプリで普通にあるし
C#だけにしても「C# 別のフォームのコントロール」でググればやっているところはいっぱい出てくる

427:デフォルトの名無しさん
19/08/24 15:56:01.09 dsz+mirUa.net
>>416
非推奨というか、普通はやりたいと思わないね。
何かの参照を握るってことはそれに依存してしまうってことだから。
Class1は本来はForm1の参照を持つ設計にしたことで、
事実上そのプログラム専用の他で流用できないコードになってる
他で使う予定ないからそれで問題ないと思うかもしれないが(以下略

428:デフォルトの名無しさん
19/08/24 19:37:50.96 VP6gB9DD0.net
>>417
確かにコントロールというぐらいだし
>>418
さんくす、実際にやる方法もわからなかったし、教えてもらったのはわかりやすかった
考え方を標準っぽいやり方に寄せたいのです
>>419
さんくす、なるほどパーツとして完成してないですね
汎用性の低いコードは改善しないと、でも今回はこれでいきます
logの取り方考えないと

429:デフォルトの名無しさん
19/08/24 21:52:23.83 PMKXSgkW0.net
処理側に出力するだけの意味しかないデリゲートでも渡してやれば?
受け側はコントロールを操作とか意識しなくて済むけど
public partial class Form1 : Form {
 :
 Class1 class1 = new Class1((string s) => { this,Textbox1.AppendText(s); })
 ;
}
class Class1 {
 delegate void output_delegate(string s);
 output_delegate output = (string s) => { Console.WriteLine(s); }; //デフォルト出力先はコンソール
 :
 Class1(output_delegate _output) {
  output = _output;
 }
 :
}

430:デフォルトの名無しさん
19/08/24 22:59:49.50 sQirZTQZ0.net
よく答えられるな
なにをしようとしてるのかすらわからんわ

431:デフォルトの名無しさん
19/08/24 23:07:54.21 VP6gB9DD0.net
>>421
レスさんくすです
でもしかし、半分ぐらいしか理解できませんでした、スイマセン
~解読中~

432:デフォルトの名無しさん
19/08/24 23:11:33.91 XZUr8QhOa.net
refやout, in引数のないdelegateなら
自分で定義せずにSystem.ActionやSystem.Funcを使う手もあるよ

433:デフォルトの名無しさん
19/08/24 23:15:15.44 dsz+mirUa.net
>>423
理解しなくていいよw
デリゲートを直で受け渡しなんかせず、素直にイベントの方を使いましょう。

434:デフォルトの名無しさん
19/08/24 23:54:17.30 GocaxRhS0.net
>>422
さすがにそれはお前がアホやで

435:デフォルトの名無しさん
19/08/24 23:56:09.98 4OMYNXZ10.net
使う手もあるというか余程じゃなければActionかFuncでは

436:デフォルトの名無しさん
19/08/25 00:04:50.89 dkxX1jtZ0.net
俺もActionを推す

437:デフォルトの名無しさん
19/08/25 00:26:08.77 DAHO6xPV0.net
MethodInvoker(´・ω・`)ボクも忘れないでね

438:デフォルトの名無しさん
19/08/25 06:55:23.52 Jlb1UCj1M.net
>>414
こういうのってbindingでどうにかするものじゃないの?

439:デフォルトの名無しさん
19/08/25 07:21:22.29 UfI3Un4o0.net
可変長の戻り値って実現できませんか?もしくは可変長のタプル
これを
public void hoge<T>(List<T> list, Func<T, string[]> selector) { ... }
hoge(list, listItem => new string[2] { listItem.A, listItem.B });
hoge(list, listItem => new string[3] { listItem.A, listItem.B, listItem.C });

public void hoge<T>(List<T> list, Func<T, params string[]> selector) { ... }
hoge(list, listItem => (listItem.A, listItem.B));
hoge(list, listItem => (listItem.A, listItem.B, listItem.C));
こんな風に書けたらいいのにって感じです

440:デフォルトの名無しさん
19/08/25 09:33:25.01 NieUwdLz0.net
>>424
さんくす、スマートに書けそうですね、他の人もさんくす、ただ考え中
>>425
今回はイベントで、ただデリゲート勉強するいいちゃんす
>>429
さんくす、ググったら実現したいことをピンポイントっぽい
>>430
さんくす、binding、さらにむずい、今までと違うアプローチっぽい

441:デフォルトの名無しさん
19/08/25 13:39:47.35 aNsJH+ura.net
>>431
何言ってるのか理解するのに5分かかったw
ラムダ式の右辺(?)の評価方法をジェネリックの型パラメータを確定する場面で指定するとか
普通に無理筋でしょう
hoge(list, listItem => new[] { listItem.A, listItem.B });

hoge(list, listItem => (listItem.A, listItem.B));
と書けたところでたいして嬉しいと思えんけど

442:デフォルトの名無しさん
19/08/25 14:04:21.51 UfI3Un4o0.net
>>433
おお、new[]で推論してくれるの忘れてました
new[]で十分スマートですねこれで問題ないです、ありがとうございました

443:デフォルトの名無しさん
19/08/25 22:03:25.03 4LqybIGY0.net
Formのプログラムで普通に動作してたOpenFormDialogを使ってる箇所が突然フリーズしてしまいます。
一旦そうなるとWindows自体が不安定になり、他のプログラムで恐らくOpenFormDialogを使ってる所が全てフリーズしOSの再起動が必要になります。
どんな要因が考えられるでしょうか。
プログラムはかんたんなグラフィックエディタで矩形やテキストを移動したり変形する程度です

444:デフォルトの名無しさん
19/08/25 22:12:11.72 hYfvTIib0.net
OpenFormDialog? OpenFileDialogじゃなくて?
OpenFileDialogならフリーズの話はあるから検索して
騒がれたのもう結構前だからまだ残ってるともあんまり思えないけど

445:デフォルトの名無しさん
19/08/25 22:13:53.33 hYfvTIib0.net
あ、残ってるってのはフリーズするバグを残してる環境の話ね

446:デフォルトの名無しさん
19/08/26 00:35:03.80 D54D8pf80.net
>>436
OpenFileDialogでした
cymon.sysの件は見つけましたけど家のPCにはありませんでした
地道にバグを見つけます

447:デフォルトの名無しさん
19/08/26 01:40:22.77 YZSrPKBs0.net
List<Employee> のIDとList<int> の一致するEmployeeを取得したいです。
List<int>をforeach、その中でList<Employee>をFirstOrDefaultで探して
新たなList<Employee>にAddする方法はできました。
これのforeachを撲滅して簡潔に書きたいのですがいい方法はありますか?

448:デフォルトの名無しさん
19/08/26 01:54:35.76 XYz1A7/c0.net
var employees = new List<Employee>();
var ids = new List<int>();
・・・・
var hitEmployees = employees.Where(employee => ids.Where(id => id == employee.id).Any()).ToList();

449:デフォルトの名無しさん
19/08/26 05:09:56.54 d+oJYvyp0.net
employees.Join(ids, _emp => _emp.ID, _id => _id, (_emp, _id) => _emp)
joinはクエリ構文の方が読みやすいな
from emp in employees join id in ids on emp.ID equals id select emp

450:デフォルトの名無しさん
19/08/26 06:09:07.86 LiZWIy1C0.net
Find

451:デフォルトの名無しさん
19/08/26 07:20:31.54 H4cvWJOz0.net
employees.FindAll(emp => ids.Contains(emp.ID))

452:デフォルトの名無しさん
19/08/26 08:56:15.22 WqA3OufOM.net
EnumSetってEnumの値を2のベキにすればいいから存在しないの?

453:デフォルトの名無しさん
19/08/26 11:40:26.35 Rhz6dR8od.net
イベントハンドラのいなづまアイコンってどういう意味なの?
気になって開発が手につきません。

454:デフォルトの名無しさん
19/08/26 12:01:50.23 EHOEsFfWa.net
地下鉄漫才かよw

455:デフォルトの名無しさん
19/08/26 16:00:24.81 7fzFkpCMr.net
execute
神がいかずちをもって手を下す
的な

456:デフォルトの名無しさん
19/08/26 22:32:00.17 YZSrPKBs0.net
>>440-443
どれもなるほど!と勉強になりました
ありがとうございます
今回はシンプルな>>443さんのでいきます!

457:デフォルトの名無しさん
19/08/27 07:54:15.38 wbq0Lfqra.net
おお、なるほど。LINQのクイズ集があれば面白そうだな。

458:デフォルトの名無しさん
19/08/27 08:59:40.07 S6vHFDx3d.net
443はlinqじゃないぞ
2.0の頃からあるListクラスのメソッドだけだ

459:デフォルトの名無しさん
19/08/27 10:18:31.48 AUeyxvTx0.net
>>450
ラムダ式が使えるようになったのはC#3.0から

460:デフォルトの名無しさん
19/08/27 11:47:29.33 S6vHFDx3d.net
>>451
そうそう。なのでデリゲート使って書く必要はあるけど

461:デフォルトの名無しさん
19/08/27 19:15:36.40 4aKZbpn00.net
次のようなことをしたいのですが、どうすればいいでしょうか。
async、awaitを使えばいいようにも思えたのですが、クラス内のループが止まらず・・・
1.ボタン押下でとある処理をするクラスのインスタンスを生成し、クラス内で処理を無限ループ
2.ボタン押下でクラス内のループを停止

462:デフォルトの名無しさん
19/08/27 19:21:08.99 a3Zgv65M0.net
>>453
ループさせているクラス内に止めるメソッド付けてボタン押したときにそれ呼び出せばいいだけでは
イベントメソッドは別のクラスでもできるから直にボタンのイベントに追加してもいいし

463:デフォルトの名無しさん
19/08/27 20:10:30.11 2XS9VBdia.net
CancellationTokenSourceを使うのが比較的妥当なやり方かな
2でボタンを押したらcancellationTokenSource.Cancel()
無限ループ側の処理では適宜cancellationToken.ThrowIfCancellationRequested()

464:デフォルトの名無しさん
19/08/27 20:56:45.60 LqXN8ItS0.net
低レベルな実装だと終了フラグの参照を渡しておくとか

465:デフォルトの名無しさん
19/08/27 21:11:30.63 fYPVnhP50.net
>>455
単純なループ処理でキャンセル例外が必要なければ
CancellationToken.IsCancellationRequestedをチェックするのでも良いね

466:デフォルトの名無しさん
19/08/27 21:12:50.98 4aKZbpn00.net
皆さん、ご回答ありがとうございます。
>>454
停止メソッドにより、ループ条件から外れるフラグを立てて
処理停止させるイメージでしょうか。
>>455
CancellationTokenSource初めて聞きました。
便利ですね!
>>456
すみません。フラグでの終了処理しか思いつきませんでした・・・
もう少しマシな実装になるとどうなるのでしょうか。
教えてもらえると助かります。

467:デフォルトの名無しさん
19/08/27 21:26:09.47 4aKZbpn00.net
>>457
そういった方法もあるのですね。ありがとうございます。

468:デフォルトの名無しさん
19/08/27 22:06:20.98 GZd8Fc/Qp.net
無限ループなんか組むな。

469:デフォルトの名無しさん
19/08/27 22:40:07.64 4aKZbpn00.net
すみません・・・
あるフォルダにファイルが保管されたときに
そのファイルを処理したくて監視に無限ループを使ってしまいました。
他に良い方法があれば、お教え願えないでしょうか。

470:デフォルトの名無しさん
19/08/27 22:43:30.90 4WMOl80S0.net
>>461
System.IO.FileSystemWatcher

471:デフォルトの名無しさん
19/08/27 22:46:14.03 4WMOl80S0.net
もしくは、win32ApiのFindFirstChangeNotification()か

472:デフォルトの名無しさん
19/08/27 22:46:46.91 4aKZbpn00.net
>>462
そんな便利なものまであるんですね!びっくりしました!
全然C#のこと知らなくて恥ずかしいです・・・
教えてくださってありがとうございました。

473:デフォルトの名無しさん
19/08/28 09:31:28.37 jmHHdju80.net
自分はC#といえば当たり前のようにWindowsFormでやってたけど
みんなは何使ってるの?

474:デフォルトの名無しさん
19/08/28 11:09:54.59 xlt6w80MM.net
>>465
特に必要なければwinform
というか、初期のブレンドが使い物にならなかったので、WPFやUWP?は必要になるまで覚えないことにした

475:デフォルトの名無しさん
19/08/28 11:18:52.44 kf58t1t/0.net
WinformからUWP APIを呼び出すことも出来るしな

476:デフォルトの名無しさん
19/08/28 12:01:00.80 nq/8XfUOM.net
WPFでやってるけど誰かにお勧めしたことはないしとてもお勧めできない

477:デフォルトの名無しさん
19/08/28 12:10:35.61 biFO59Yua.net
>>465
Winformなプロジェクトだが、XAMLでのレイアウトが好きだから自分の担当画面はWPF使ってる

478:デフォルトの名無しさん
19/08/28 12:29:45.46 XsRrDAKXd.net
>>465
ASP.NET Core

479:デフォルトの名無しさん
19/08/28 12:34:32.95 in2U0t2Ud.net
>>465
WinFormsやらWPFやらXamarin

480:デフォルトの名無しさん
19/08/28 14:05:53.46 xlt6w80MM.net
>>465
アンカーやドック追加してくれたのが嬉しすぎて、他に浮気してまで新たに覚える気にならないってのもあるかな

481:デフォルトの名無しさん
19/08/28 20:18:04.95 h4zgSqGZd.net
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();
アクティブウィンドウのクライアント領域を取得するにはどうすればいいでしょうか?
上のメソッド使えば行けそうなんだけど、行き詰まってます。

482:デフォルトの名無しさん
19/08/28 20:23:25.50 7/MPDbwD0.net
C#関係ない

483:デフォルトの名無しさん
19/08/28 20:39:43.87 j6ZvHlbE0.net
>>473
それはアクティブになっているウインドウのハンドルを返すだけのもの
URLリンク(docs.microsoft.com)
RECTの構造体は自分で用意して上のURLではポインタが引数になっているけどC#なら
[DllImport("user32.dll")]
private static extern int GetClientRect(IntPtr hwnd, ref RECT Rect);
みたいに構造体をrefかoutで指定したらそこに戻ってくる

484:デフォルトの名無しさん
19/08/28 23:28:13.40 1vTqziPj0.net
c#楽しいね
直感ですぐGUIアプリ作れるからプログラミング覚えたいけど特に目標がないって人にはc#一択だと思う

485:デフォルトの名無しさん
19/08/28 23:50:51.61 RWMmexzc0.net
>>475
ほぼそのまんまのサンプルを見つけて問題はとりあえず解決しました。
URLリンク(ja.stackoverflow.com)で指定した別プロセスのウインドウを-クライアント領域のみキャプチャしたい
アクティブウィンドウのクライアント領域の取得は、
c# + netframework ではできないのですか?

486:デフォルトの名無しさん
19/08/29 00:27:03.61 yP1vALXb0.net
できるよ
お前には一週間早い

487:デフォルトの名無しさん
19/08/29 01:19:09.27 wYLP5dcN0.net
次はListViewの要素の長方形を得たいとかかな
結局.netからは離れていきそう

488:デフォルトの名無しさん
19/08/29 01:53:51.70 KY//KYCr0.net
TreeViewの表示を標準の
項目1
┗項目2
  ┣項目3
  ┗項目4
から、
項目1━項目2┳項目3
           ┗項目4
にするにはどうすればよいでしょうか?

489:デフォルトの名無しさん
19/08/29 01:59:31.63 AZY1Uw460.net
owner draw

490:デフォルトの名無しさん
19/08/29 02:11:15.91 HoxlVuhE0.n


491:et



492:デフォルトの名無しさん
19/08/29 07:51:27.50 JXiDsy0oa.net
>>473
GetActiveWindow()って無かったっけ?

493:デフォルトの名無しさん
19/08/29 07:52:24.70 JXiDsy0oa.net
↑ああ、早とちり

494:デフォルトの名無しさん
19/08/30 21:10:43.61 euEksp6k0.net
ドラッグアンドドロップで拡張子を.txt→.jsonに変更するプログラムのコードをください

495:デフォルトの名無しさん
19/08/30 21:15:43.51 a95S+czO0.net
batでやったほうが早そうなレベルだけど
fileをrenameするだけでしょ?

496:デフォルトの名無しさん
19/08/30 21:18:37.15 euEksp6k0.net
renameするだけですね
どうしてもC♯でやりたいんです

497:デフォルトの名無しさん
19/08/30 21:30:48.63 m5yHWiCc0.net
>>487
拡張子の書き換えは
System.IO.Path.ChangeExtension(filepath, extension)
ここはコードを代わりに書くスレじゃないのでキーワードはあるのだから後はググってください

498:デフォルトの名無しさん
19/08/30 21:39:06.95 euEksp6k0.net
一日ググってもわからなかったので聞きに来ました

499:デフォルトの名無しさん
19/08/30 22:13:39.42 LYP1s7Gj0.net
誰が一日ググれば聞いていいって言ったんだよ
ひと月はググれ

500:デフォルトの名無しさん
19/08/30 22:15:07.21 gOJh05ROp.net
>>488
それだけじゃ変数領域にあるファイル名しかリネームされてない予感

501:デフォルトの名無しさん
19/08/30 22:16:45.05 5knN0MFU0.net
むしろググる以外のことをしろ
一日やったらわかったこととわからんとこぐらいあるだろ

502:デフォルトの名無しさん
19/08/30 22:17:38.29 a95S+czO0.net
どこがわからなかったのかくらい書いてくれないと説明できんよ
ドラッグアンドドロップの受け取り方?
拡張子の変え方?
コンソールアプリなの?デスクトップアプリなの?

503:デフォルトの名無しさん
19/08/30 22:22:42.01 euEksp6k0.net
URLリンク(www.ipentec.com)
URLリンク(dobon.net)
ここの二つのサイトを参考にして組み合わせれないかと色々やってみたんですけどうまくいかないんですよね
それぞれ片方ずつならうまく動きます

504:デフォルトの名無しさん
19/08/30 22:27:14.34 a95S+czO0.net
上手く行かないとは何かを説明して
コンパイルできない?エラーが出る?例外が出る?
実はmoveできてるけど別のフォルダに作ってるとかないよね?

505:デフォルトの名無しさん
19/08/30 22:27:46.98 Eq4lHDlT0.net
答えが出てるから色々試そうぜ
あと1日試してやり方がわからないのなら
>>1にある
>■コードを貼る場合は↓を使いましょう。
>URLリンク(ideone.com)
>URLリンク(dotnetfiddle.net)
にコードを張ってここからどうやれば良いかを聞いてくれ

506:デフォルトの名無しさん
19/08/30 22:47:12.10 euEksp6k0.net
URLリンク(ideone.com)
これで貼れてますか?フォームアプリケーションです。
ここの57行目のファイルのパスをドラッグアンドドロップして得たパスに変更したいんですけどうまくいかないんですよね

507:デフォルトの名無しさん
19/08/30 22:58:41.75 m5yHWiCc0.net
>>497
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
for (int i = 0; i < files.Length; i++)
{
string fileName = files[i];
textBox1.Text += fileName + "\r\n";
System.IO.File.Move(fileName, System.IO.Path.ChangeExtension(fileName, "bak"));
 }
}
これでいいでしょ
ボタンクリックでやりたいのならフィールドでファイルパス持たないと

508:デフォルトの名無しさん
19/08/30 23:12:12.27 euEksp6k0.net
>>498
できました、ありがとうございます
こんな簡単だったんですね・・・・・・

509:デフォルトの名無しさん
19/08/30 23:59:42.45 Nv4TyFgP0.net
>>498
重箱の隅で本質とは関係ないけど、
"\r\n"はEnvironment.NewLineの方が良いな

510:デフォルトの名無しさん
19/08/31 00:15:27.52 yACTwzu40.net
テキストボックスのテキストも環境の影響受けるんか?
おれは環境によらず出力一定のほうが安心する

511:デフォルトの名無しさん
19/08/31 00:24:05.20 8S6g8PTE0.net
どちらかと言うと定義済みの定数としてだな

512:デフォルトの名無しさん
19/08/31 02:02:25.00 XD/oUD8U0.net
コンソールとGUIの改行が同じという保証なんて無いんだが

513:デフォルトの名無しさん
19/08/31 04:03:11.60 5bIs7pBL0.net
>>503
同意

514:デフォルトの名無しさん
19/08/31 08:13:13.94 auI6O9iK0.net
JSONを扱いたいのですが.NET標準機能では
JSON.NETにあるJsonPropertyのような変数名とは別の名前で
出力できるような機能は無いでしょうか?

515:デフォルトの名無しさん
19/08/31 08:26:54.85 /xXRK3gd0.net
>>505
DataContractJsonSerializer使って
[DataMember(Name="別の名前")]
とか?

516:デフォルトの名無しさん
19/08/31 08:38:53.92 auI6O9iK0.net
>>506
うぉぉぉ
できました。ありがとうございます!

517:デフォルトの名無しさん
19/08/31 15:26:10.82 pxkHJ9ge0.net
クロームにURL開かせるプログラムって作れるのかな

518:デフォルトの名無しさん
19/08/31 15:34:24.66 pxkHJ9ge0.net
標準ブラウザで開くのがありました

519:デフォルトの名無しさん
19/08/31 17:12:50.00 3HNIz5om0.net
引数にURLを入れて起動すればいいんじゃない?
やったことないけど

520:デフォルトの名無しさん
19/08/31 18:30:37.90 OVCgKeDNa.net
headlessでできるよー

521:デフォルトの名無しさん
19/08/31 18:34:41.41 lSinYyRY0.net
>>510
どんなブラウザでも、標準でそうなってる(べき)と思ってる。meも

522:デフォルトの名無しさん
19/08/31 20:59:16.96 DOQSWUJb0.net
start url
って叩きゃ標準ブラウザが立ち上がるでしょ
引数ってブラウザのexeパス調べてそこに渡すの?
OSが知ってんだからOSにぶん投げればいいだけじゃん

523:デフォルトの名無しさん
19/08/31 22:02:09.86 3KJgwSNk0.net
>>508
Seleniumだな、それこそ。

524:デフォルトの名無しさん
19/09/02 13:12:29.24 x5YZ9uix0.net
Span<T>をコレクションに貯める事って出来ないんでしょうか?
受け取ったbyte[]から一部のみを必要としていますが、startIndexとlengthを一々記録するのも面倒であるため、現状は新たにnew byte[length]を作りコピーをして貯めています
別にこれでも全く困っていませんが、あんまりスマートではない気がしているので元のbyte[]を.AsSpan(startIndex, length)したものをコレクションに貯められればスッキリするのですが

525:デフォルトの名無しさん
19/09/02 13:30:51.46 DTXhuRLF0.net
できないよ
array[3..7]とかでSliceするとか元の配列を使うならArraySegment<T>使うとか

526:デフォルトの名無しさん
19/09/02 14:07:32.18 /BuOMso5a.net
へーSpanってそんな制約があるのか知らんかった
URLリンク(stackoverflow.com)

527:デフォルトの名無しさん
19/09/02 14:41:25.59 ZSYwkq3t0.net
>>508
例えば、Ruby, Selenium Webdriver なら、
下のファイルを、test.rb とすると、端末で、
ruby test.rb "ここにURL"
と入力すると、引数がARGV[0] に入ってくる
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = Selenium::WebDriver.for :chrome, options: options
driver.navigate.to ARGV[0] # URL

528:デフォルトの名無しさん
19/09/02 17:47:47.05 btOIY8sya.net
>>515
MemoryExtensions.AsMemory()を経由してSystem.Memory<T>を管理するのはどう?

529:デフォルトの名無しさん
19/09/02 22:24:59.33 yMcQzedZ0.net
>>518
C#で書かないならスレチ

530:デフォルトの名無しさん
19/09/03 00:14:45.15 nBDYMOwL0.net
なんで突然ruby?

531:デフォルトの名無しさん
19/09/03 00:20:55.08 UWVASv0T0.net
>>521
ソイツはいくつかのスレタイにRuby禁止といれることになった元凶だから、考えるだけ無駄よ

532:デフォルトの名無しさん
19/09/03 04:53:21.49 uBbuO65f0.net
これもう半分まつもとゆきひろだろ

533:デフォルトの名無しさん
19/09/03 07:44:05.39 ZfMnDhcZ0.net
Matzから分離した闇の半身か何か(ダークファンタジー感)

534:デフォルトの名無しさん
19/09/03 15:02:01.60 qa0OGce90.net
zipファイルのパスワード総当たりのコードってどこかに落ちてたりしません?

535:デフォルトの名無しさん
19/09/03 15:23:56.69 gWEsYspAF.net
ム板なんだし自分で書いても大した手間じゃないだろ

536:デフォルトの名無しさん
19/09/04 23:01:10.22 YAGCYgl00.net
ラプラス使ったほうが早い

537:デフォルトの名無しさん
19/09/04 23:19:14.03 +3gE1skmF.net
ラプラス変換関係ないだろ

538:デフォルトの名無しさん
19/09/04 23:23:33.02 YAGCYgl00.net
フリーソフトなんだけど(´・ω・`)

539:デフォルトの名無しさん
19/09/05 08:24:49.80 cdpeKhxuM.net
ラブプラスに見えたし

540:デフォルトの名無しさん
19/09/05 12:39:28.85 mWzCSlDu0.net
頭がc
胴体がDelphi
尻尾がJava
これはなんという生き物か?

541:デフォルトの名無しさん
19/09/05 12:52:58.36 IuZ8kmLDd.net
メインフォームと5つボタンがあるサブフォームあります。
サブフォームで押されたボタンをメインフォームに渡す方法として、下記のようなことが書いてあります。
「サブフォームの呼び出し時にメインフォームのインスタンスをサブフォームの変数に渡すか、もしくは Ownerプロパティを設定し、サブフォームにメインフォームのインスタンスを伝える必要があります。」
これ循環参照にならないのですか?
owner プロパティならフレームワークでうまくやってくれそうですが、そうしないなら典型的な循環参照でメモリにいつまでも残るように見えます。

542:デフォルトの名無しさん
19/09/05 12:57:57.83 IuZ8kmLDd.net
>532のコードで気になった部分
public FormMain() {
InitializeComponent();
fs = new FormSub();
fs.formMain = this;
}
private void button1_Click(object sender, EventArgs e) {
fs.Show();
}

543:デフォルトの名無しさん
19/09/05 13:07:57.99 /TG+lkXnd.net
昔のVBとかじゃないから
参照カウント方式とかじゃないから
大丈夫だよ

544:デフォルトの名無しさん
19/09/05 15:05:44.19 olW2Z8c3M.net
>>533
循環になってないやん
相互参照になってるだけ

545:デフォルトの名無しさん
19/09/05 15:11:39.37 MYIgyYNAM.net
>>535
相互参照⊂循環参照

546:デフォルトの名無しさん
19/09/06 07:39:44.27 ON7V4Cum0.net
awaitの仕組みって面白いな
プログラムは逐次実行と思い込んでいたから最初戸惑ったけど
プログラムの可読性を上げつつ非同期が書ける仕組み

547:デフォルトの名無しさん
19/09/06 12:21:39.70 5uKlWCRxp.net
バカ、逆に非同期の仕組みが分かりにくい事になってて最悪だわ。
若い奴らはある種のおまじないとしか思って無いぞ。
だからサンプル通りに書いたら動いたで思考停止してるわ。

548:デフォルトの名無しさん
19/09/06 12:23:25.42 5uKlWCRxp.net
だったら最初から完全に隠蔽しちまえばいいのにそれも出来ない半端な言語だよな。

549:デフォルトの名無しさん
19/09/06 12:27:55.87 RjtqJRZu0.net
>>537
async/awaitはとてもいいよな

550:デフォルトの名無しさん
19/09/06 12:36:51.77 dfZG2SkRd.net
>>539
へー半端な言語が大増殖してるねよかったね

551:デフォルトの名無しさん
19/09/06 13:29:27.52 TB1/9ae/0.net
ものすごく細かく気にする価値のないであろう上で質問させてください。
下記のようなコードではColorを予め変数として保持していますが、ColorではなくSolidColorBrushごと変数として持っておいた方が良いと思うのですが違うんでしょうか?(Colorの各変数は下記のConvertメソッドでしか使われていません)
private Color redColor = Colors.Red;
private Color blueColor = Colors.Blue;
public object Convert(object value)
{
switch ((int)value)
{
case 0:
return new SolidColorBrush(redColor);
default:
return new SolidColorBrush(blueColor);
}
}

552:デフォルトの名無しさん
19/09/06 13:30:16.71 I5nGSvp60.net
Occam 呼んだ~

553:デフォルトの名無しさん
19/09/06 13:38:31.81 qBxw88Xh0.net
Convert呼び出した側がOpacityとか勝手に変えたりすることがないことが明らかなら
SolidColorBrushで持っててもいいよ

554:デフォルトの名無しさん
19/09/06 13:43:03.96 TB1/9ae/0.net
>>544
上記のコードは色以外は初期化したいっていう意図だったんですね
理解出来ました、どうもありがとうございます。

555:デフォルトの名無しさん
19/09/06 20:41:34.27 QErA9RfTd.net
return HttpResponseMessage {
StatusCode=HttpStatusCode.InternalServerError

これでクライアントにレスポンス返しても、クライアントで受け取ったレスポンスコードが200になるんだが、どうすりゃ良い?

556:デフォルトの名無しさん
19/09/06 23:59:27.95 2XeZAy8C0.net
short lo = 500;
short hi = -1;
int value = hi << 16 & lo;
上記のプログラムでvalueに期待する結果が格納されません。
valueの右辺へおかしいところありますか?

557:デフォルトの名無しさん
19/09/07 00:04:12.02 1iyY1sdc0.net
まず期待結果を教えろよ
脳内に格納したままで喋るな

558:デフォルトの名無しさん
19/09/07 00:35:07.80 lng4b11Wa.net
ぶっ飛んでるねw

559:デフォルトの名無しさん
19/09/07 00:47:49.03 lKqYze8d0.net
>>547
なんとなく&(and)と|(or)を間違えてる気がするけど、期待値書いてくれなきゃ分からんねw

560:デフォルトの名無しさん
19/09/07 01:10:23.93 ClfuNVBY0.net
>>547
ビット演算?をしてる割には
unsignedじゃないのが気になった

561:デフォルトの名無しさん
19/09/07 01:21:40.06 SOW3zbb30.net
C派生のシフト演算子ってビット演算子よりも優先順位低いんじゃなかったか?
C#で入れ替わったのかもしれんが

562:デフォルトの名無しさん
19/09/07 01:30:36.24 spGdC07na.net
型変換か?

563:デフォルトの名無しさん
19/09/07 01:31:47.20 l9Sxm6Vo0.net
>>552
docsに演算子の一覧と優先順位がある
URLリンク(docs.microsoft.com)

564:デフォルトの名無しさん
19/09/07 01:52:37.97 lKqYze8d0.net
>>552
逆だぞ
Cの時から

565:デフォルトの名無しさん
19/09/07 01:57:56.73 7Z6eBjmW0.net
?はもっと上げてほしい

566:デフォルトの名無しさん
19/09/07 01:58:53.26 7Z6eBjmW0.net
じゃなくて??

567:デフォルトの名無しさん
19/09/07 11:12:31.90 53qID/ifa.net
async/await、読みやすいし書きやすいけどな。

568:デフォルトの名無しさん
19/09/07 11:14:11.92 LlCffhcK0.net
URLリンク(www.youtube.com)
Introduction into StockSharp training course
どうこれVisual Studioってこんなに速く作れるの?
自分で自動売買ソフト組めるってすごくね?

569:デフォルトの名無しさん
19/09/09 13:42:14.17 mFi2C/Ml0.net
クラスの継承について分からくなってしまったので教えて下さい。
以下のプログラムを実行すると、コメントの通り、False, True と表示されます。
[STAThread]
static void Main(string[] args)
{
  var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  var folderItems = new Shell32.Shell().NameSpace(desktopPath).Items();
  Console.WriteLine(folderItems is Shell32.FolderItems2); // False と表示される
  Console.WriteLine(folderItems is Shell32.FolderItems3); // True と表示される
}
Shell32.FolderItems3 は Shell32.FolderItems2 を継承しているので
2つ目が True なら必ず1つ目も True になると思っていたのですが、
これはどのようなことが起こっているのでしょうか。
FolderItems2 object
URLリンク(docs.microsoft.com)
FolderItems3 object
URLリンク(docs.microsoft.com)
.Net Framework 4.7.2 でコンパイルし、Windows 10 Pro で実行しました。
よろしくお願いいたします。

570:デフォルトの名無しさん
19/09/09 13:57:18.69 +ClizqJ4d.net
下記 は子フォームから親フォームへのデータ引き渡しのサンプルです。
ShowDialog(); の戻り値を使ってないのですが、ここがよくわかりません。
static public List<object> ShowForm2(List<object> argObjs) {
using (Form2 subForm = new Form2(argObjs)) {
subForm.ShowDialog(); // 戻り値は?
return subForm.resultObjs;
}
}
現在はデータの受け渡しは ShowDialog(); で表示、DialogResult を受け取り、これで処理を分岐。
これだと呼び出し側が少し膨らむと思って探していたサンプルが上のやつです。

571:デフォルトの名無しさん
19/09/09 14:01:51.48 FLVXg6p/0.net
>>560
type of


572:



573:デフォルトの名無しさん
19/09/09 14:25:45.50 wj5pBZXU0.net
>>561
それだけじゃ何とも言えないけど
ダイアログがキャンセルされたかどうかもresultObjsに含んでる
またはキャンセルされたかどうかは重要ではない
のどっちかでDialogResultは不要と考えたんじゃね
あとはただのチェック忘れか

574:デフォルトの名無しさん
19/09/09 14:33:19.47 +8Zg4WGY0.net
showdialogはあくまでサブフォーム表示中に
処理を進めないためだけに使っていて
表示したサブフォームがOKもキャンセルもない作りなら
返り値を使う必要がないんだろう
例えばファイルの検索処理とその経過を表示するだけの
サブフォームだったりするんじゃないかな

575:デフォルトの名無しさん
19/09/09 14:44:41.43 y33/yVcMa.net
>>560
FolderItems2とかFolderItems3はあくまでVSによって作られた
ラッパークラスなんだと思うけど、たぶんこのラッパークラスには
元のCOMの継承関係は反映されないんだろう。
知らないけど。

576:デフォルトの名無しさん
19/09/09 14:54:29.42 mFi2C/Ml0.net
>>562
レスどうもありがとうございます。
申し訳ないですが、おっしゃりたいことが理解できませんでした。
>>565
レスどうもありがとうございます。
>>560 で貼り付けた URL は不適切で、
本来は以下の URL を貼り付けるべきでした。
申し訳ないです。
FolderItems2 Interface
URLリンク(docs.microsoft.com)
FolderItems3 Interface
URLリンク(docs.microsoft.com)
この .Net の説明を見てもやはり継承関係はあるようですし、
if (folderItems is Shell32.FolderItems3 folderItems3)
{
  Shell32.FolderItems2 folderItems2 = folderItems3;
}
のようなコードもコンパイルエラーにならないので、
継承関係があることは間違いないと思います。
また何かお分かりのことがあれば教えていただけると嬉しく思います。
よろしくお願いいたします。

577:デフォルトの名無しさん
19/09/09 15:06:55.45 wj5pBZXU0.net
COMにおける継承はメンバを引き継ぐという意味であってキャスト可能かどうかは別の話だから
.NETのコード上で明示的または暗黙的にCOMオブジェクト(のラッパ)をキャストした場合
QueryInterfaceが呼び出されてそのインターフェイスに変換できるかどうかオブジェクト自身に問い合わせる
だから共通型システム的には問題ない暗黙的キャストでもその下のQueryInterfaceで拒否される可能性がある

578:デフォルトの名無しさん
19/09/09 19:12:21.94 ko6k1+RqM.net
正規表現を教えてください。
先頭一文字は大文字アルファベット、
次の一文字は大文字アルファベットかスペース、
残り五文字が数字、です。
文字数は多すぎても少なすぎてもダメてす。

579:デフォルトの名無しさん
19/09/09 19:34:55.30 N7SL81rE0.net
[A-Z][A-Z\s]\d{5}

580:デフォルトの名無しさん
19/09/09 19:51:19.13 P/8qmdeQ0.net
C#でdxfファイルを読み込んでどんなCADデータかなと表示するにはどんな方法がありますか?

581:デフォルトの名無しさん
19/09/09 19:51:40.30 +ClizqJ4d.net
>>563
戻り値使わないとエラーでビルドできないと思ったんですが、こんな書き方あるんですね。

582:デフォルトの名無しさん
19/09/09 19:58:03.26 ko6k1+RqM.net
>>569
ありがとうございます!
できました!!

583:デフォルトの名無しさん
19/09/09 19:58:22.06 8qRxx3SUa.net
>>570
Autodeskのサイトからviewerが落とせたと思うがそれ使うんじゃダメなのか?
C#を使って何か独自のことがしたいの?

584:デフォルトの名無しさん
19/09/09 20:38:09.86 /GXaCKPOd.net
>>570
自力でレンダリングしてるらしきサンプル見つけた
URLリンク(www.codeproject.com)

585:デフォルトの名無しさん
19/09/09 21:02:37.25 gB0pdJ5j0.net
>>570
結構大変。DWGならlibreDWGってライブラリーがある

586:デフォルトの名無しさん
19/09/10 22:30:01.75 /j9k/Fivd.net
>>573
最終型は建築のキープランってものがあって、そこに無数の符号という記号が丸の中に書いてあるんだけどそこを色塗りをしたい。
>>574
ありがとうございます。
難解過ぎてゆっくり休みの日にでも読んでみます。
>>575
やっぱ大変そうですよね。調べてもなかなか...

C#スレはあったかいな。ありがとうございます!

587:デフォルトの名無しさん
19/09/11 00:00:22.11 1SzE9pLa0.net
一般人「ウィンドウ」
キモオタ「フォームがーーー」

588:デフォルトの名無しさん
19/09/11 18:58:32.68 YXyi8nZ+0.net
フォームってなに?泡?

589:デフォルトの名無しさん
19/09/12 08:36:47.62 XbTCqLqm0.net
c#は食わず嫌いだったけど使ってみたら案外良かった
使いやすいように改良してるんだな

590:デフォルトの名無しさん
19/09/12 11:25:52.65 QIiZhm2T0.net
コントロールのタイマーの質問なんですが
private void Timer1_Tick(object sender, EventArgs e)
{
  MyClass myClass = new MyClass(this);
  myClass.//クラスの処理いろいろ
}
こう書くと毎回クラスが初期化されてしまいます
タイマー内で同じクラスのインスタンスを使い続けたい場合どのように書けばいいのでしょか?

591:デフォルトの名無しさん
19/09/12 11:31:00.31 AZGZd9Ny0.net
myClassをメンバ変数にする

592:デフォルトの名無しさん
19/09/12 11:40:42.95 2zGYYD27p.net
myClassなんて再利用性が皆無なネーミングすんなよ。

593:デフォルトの名無しさん
19/09/12 11:45:28.48 joMf8nOja.net
>>582
説明のための命名だろうよ

594:デフォルトの名無しさん
19/09/12 12:10:59.94 V+BKjeIEM.net
発達はコンテキストが想像できないから…

595:デフォルトの名無しさん
19/09/12 13:44:13.80 j3ZoG8EK0.net
>>582
aho


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