X



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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ドコグロ MM2f-DHp5)
垢版 |
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0252デフォルトの名無しさん (ワッチョイ 3302-QMAU)
垢版 |
2019/08/15(木) 00:17:18.78ID:4RLQ3HFd0
>>246
WPFやFormアプリケーションで描画しきれないケースのみ採用するパターンが多いかと。
習得する分には、もしもの時に出せる手札が増える(知見が広がる)ので良いとは思います。
0254デフォルトの名無しさん (ワッチョイ d9da-QMAU)
垢版 |
2019/08/15(木) 05:13:06.12ID:YYpr9nEd0
dapper で、dynamic型で取得したレコードのカラム名は、どうやってプロパティにマッピング?すればよいでしょうか?
以下のようなイメージです。

var list = connection.Query<dynamic>(@"SELECT cd, name FROM hoge_table").ToList();
list.ForEach(item =>
{
this.cd = item.cd;   //cdカラムは存在しているが、この方法では取得出来ない。
});
0257デフォルトの名無しさん (ワッチョイ 132c-gphu)
垢版 |
2019/08/15(木) 13:17:25.77ID:XW4rFrdd0
using (var conn = new SQLiteConnection("Data Source=:memory:"))
{
conn.Open();
conn.Execute("CREATE TABLE test (cd INTEGER, name TEXT)");
conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 1, name = "a" });
conn.Execute("INSERT INTO test VALUES (@cd, @name)", new { cd = 2, name = "b" });
foreach (var row in conn.Query<dynamic>("SELECT cd, name FROM test"))
{
Debug.WriteLine($"{row.cd} - {row.name}");
}
}
問題なかったけど?
コンパイルエラーになってるんだったらその内容書いて
0270251 (ワッチョイ 132c-BF++)
垢版 |
2019/08/15(木) 23:18:45.58ID:5MxOdPEK0
まあ、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
0275デフォルトの名無しさん (ワッチョイ 299f-+XXD)
垢版 |
2019/08/16(金) 00:57:25.58ID:Capr2asl0
>>273
いくらやめろと言われてもところ構わず唐突にRubyの話を始める頭のおかしい奴が、この板にいついているから。スレタイにRuby禁止と書かれているスレがいくつかあるが、コイツが原因。
0276デフォルトの名無しさん (ワッチョイ 596e-DuLZ)
垢版 |
2019/08/16(金) 00:58:13.28ID:2i9/2j960
C#っつーかプログラミング言語一般の話になっちゃうかもしれないんですけど
勉強してて例外のところに差し掛かったんですけどめっちゃ色々種類あるじゃないですか
んでもって例えば関数一つ作るにしても考えようによってはほんと沢山の種類の例外が発生する可能性がありますよね
そういうのをとにかく可能性が少しでもあれば例外をスローするようにしてたらコードが例外ばっかになっちゃう気がします
書く例外と書かない例外の境界線はどこにあるのでしょうか
0278デフォルトの名無しさん (アウアウウー Sa5d-h434)
垢版 |
2019/08/16(金) 01:08:02.04ID:G0Kx7mvIa
>>276
よくわからん理屈だな
仮にその例外を「書かない」と判断したとして、その「例外的な状態」を例外の代わりにどう処理するつもり?
放置しても問題なく動き続けられるorその場で適切な対処をして回復できるなら、そりゃ例外投げるよりその方がいいに決まってる
0279デフォルトの名無しさん (ワッチョイ 299f-+XXD)
垢版 |
2019/08/16(金) 01:13:52.65ID:Capr2asl0
>>276
ライブラリ関数に渡す引数が正しくないとかのように、自分が書いているコードが正しくない場合に発生する例外、逆に言えば正しいコードを書けば発生しない例外は基本的にその場ではいちいちcatchしない。
ただし完全にバグがないということを保証するのは困難なので、プログラムの上流でまとめてcatchして何らかのメッセージを出すなどした方が良い。どう対処すべきかはそのシステムに求められる要件次第だけど。
ファイルにアクセスできないとか、ユーザからの入力データが正しくないことにより発生するような例外とか、自分のコードの外部の要因で発生する可能性のある例外は、その都度catchして適切に対処する必要がある。
0281デフォルトの名無しさん (ワッチョイ 132f-BF++)
垢版 |
2019/08/16(金) 02:16:34.36ID:3ldAil1N0
>>276
その処理内で対処できるなら投げない
できないなら例外なげる

>>279-280
キャッチする話じゃなくて投げるほうの話だろ
まあ、キャッチも同じ考え方で、自分で対処できる例外はキャッチする
それ以外はそのまま上位へ

今はこういう考え方が主流だと思う
0282デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/16(金) 02:17:58.68ID:KW3/fLy3a
>>276
そんなの手を動かさずに机上で考えてるからそうなるだけw

処理できない問題は(基本的には)例外を投げて呼び出し側に通知するしかない。
処理できない例外は投げるしかない。
処理できないのにcatchして握りつぶしてよい例外なんかない。
何が難しいの?
0283デフォルトの名無しさん (ワッチョイ 51ba-/tGK)
垢版 |
2019/08/16(金) 05:58:38.34ID:RrHjcCxL0
初心者マークの人へのアドバイスとしては

例外をthrowするケースは
・事前条件が崩れる場合、例えば引数がおかしい場合や処理の準備が整わない場合
・処理に失敗したことを伝える場合
まずはこのあたりを基準に

逆にcatchはむやみやたらにしてはいけないし、特に握り潰してはいけない

他人のソースをたくさん読んで、たくさん考えて書くしかないよね
0290デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/16(金) 12:43:54.88ID:vQM55/5Pa
いやとにかく

(1) 例外を投げるかどうか
(2) 例外をcatchするかどうか

こんなことで悩むなんてありえないよ。悩む理由がない。
悩みどころなんて、どの例外を投げるかの選択、あるいは例外をどの程度
場合分けするか、ぐらいしかない。

これは例えば、引数が変だった場合にとにかくいつでもざっくりArgumentExceptionを投げて済ますか、
引数がどう不適切なのか、細かく場合分けしてより適切な例外を投げるようにするかの選択

余談だけどこういうと怒る人もいるかもしれんが、個人的には例外の場合分けなんて
本当はどうでもいいと思ってるw

役に立つことはほぼないwほとんど場合プログラマの自己満足だw
そのコードを見られる場合にはね。(だから他人が使うライブラリを書いてる場合は別問題)
0291デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/16(金) 12:50:25.25ID:vQM55/5Pa
あと、そもそもメソッドのデザインとして
例外を投げる代わりにout引数か戻り値でnull(あるいは例外オブジェクト)
を返すって選択肢もあるから、そこで迷うってケースもないことはないけどね。

呼び出し側でいちいちtryブロックを書く必要があるのは鬱陶しい、
って需要もあるから
0292デフォルトの名無しさん (アウアウエー Sae3-SXVW)
垢版 |
2019/08/16(金) 12:59:06.06ID:mZqFzvyqa
キモいRuby厨はスレ追い出されてC#スレに引っ越した
0298デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/16(金) 16:34:34.90ID:vQM55/5Pa
>>294
TryParse的な物を想定して書いたけど>>291じゃ端折り過ぎて意味不明だね申し訳ない
戻り値nullは(メソッドじゃないけど)as的な物を想定

例外オブジェクトをout変数で返すのはたぶんやってる人はほどんどいないけど、
tryブロックが嫌いなら場合によっては便利かも
0301デフォルトの名無しさん (スフッ Sd33-oOLq)
垢版 |
2019/08/16(金) 17:53:53.26ID:9StEh2pLd
例外はログ拾う時に絶望したくないから適切に投げるなぁ。
どうでも良いという論調は作るだけで保守しない人の発想みたいで少し嫌かもしれん。
アプリケーションのロジックをバッチでも使いたい、みたいな時に、毎度戻り値を検証するんじゃなくてバッチの一連のトランザクション自体落としちゃいたい時に二度手間な気がするんだが、その辺どう作ってるんだろう?
0305デフォルトの名無しさん (ワッチョイ 2b2d-QMAU)
垢版 |
2019/08/16(金) 23:41:19.50ID:AADFbgN80
プログラム板住人は煽られるとすぐムキになるから、転載アフィブロガーの種まきに最適な場所になっちまってんだろう
0308251 (ワッチョイ 132c-BF++)
垢版 |
2019/08/17(土) 02:31:35.40ID:fYRni8gj0
Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、
ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した!

それで、Rails 6 では、
DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、
テストを複数CPU コアで、並列実行する機能が実装された!
0315デフォルトの名無しさん (ワッチョイ 3990-osyD)
垢版 |
2019/08/17(土) 19:21:30.41ID:lWdyvSQl0
エスパーすると、ASP.NETがあるがデスクトップアプリがメインだったC#よりまだJavaスレの方がまだselenium詳しそうなやつ多そうだから、せめてjavaスレ行けって事だろ。
ほんとこれぐらいもエスパーできなきゃアホやろ
0316デフォルトの名無しさん (ワッチョイ 1342-NA/o)
垢版 |
2019/08/17(土) 21:04:14.52ID:qUgpJGd70
それなら「Rubyスレに行け」が流れ的に当然であるのに何故か「Java」
彼にとってサーバーサイドの言語は全部Java
ほぼ「ゲーム機を全部ファミコンと呼ぶおかん」状態と考えるのが妥当と思われる
0319デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/17(土) 22:34:51.12ID:8QP5rwWB0
KeyValuePair c=func1();
cをnull判定できないんですがどうしたらいいですか?
Myclass c=func2();
の場合、null判定できます。

クラスは出来て、KeyValuePairは出来ないのは何故ですか?
0328251 (ワッチョイ 132c-BF++)
垢版 |
2019/08/17(土) 23:47:28.51ID:fYRni8gj0
そりゃ、C#・Java は、静的言語で同じだから、
静的言語になれているなら、Selenium の話は、Java で聞くのがよい

動的言語なら、Ruby, Python で聞けばよい

Seleniumデザインパターン&ベストプラクティス、2015、オライリー
これは、Rubyでテストを書いた本

ウェブ系・HTML は基本、Ruby。
まあ、Java のSelenium の本も出てるけど

Java は、Spring Boot か?
動的言語のGroovy じゃないのか?
0332デフォルトの名無しさん (ワッチョイ b32d-bnMF)
垢版 |
2019/08/18(日) 13:41:29.71ID:+4zzAGlV0
WinForms で質問です。
標準の Form から継承した MyForm を abstract で作りました。
この MyForm は abstract なのでデザインで開けません。
(ここまでOK)

MyForm をもとに SubForm なるものを継承して作りました。
これには abstract は付けていないのですが、これもまたデザイナで開けません。
あまりに残念すぎる挙動だと思うのですが、これは仕様でしょうか。
0334デフォルトの名無しさん (ドコグロ MM63-h434)
垢版 |
2019/08/18(日) 13:45:24.63ID:jp7+H4+aM
.NETではフォームの継承は推奨されていません
共通化したい場合はユーザーコントロールを使用してください
なお、WinFormsは既に開発が終了しており、今後改善される可能性はありません
0335デフォルトの名無しさん (ワッチョイ b32d-bnMF)
垢版 |
2019/08/18(日) 13:51:36.77ID:+4zzAGlV0
やっぱりですか。

デザイナが使えないと不便なので、MyForm 側にabstract 付けないで、virtual 定義しているのですが
継承先で「いじり必須」なものを忘れてしまうため、本当は abstract したいのですが・・

WinForms の開発が終わったって、世の中、VS で弄られてるソースの9割は WinForms だと思うんですけどねぇ
0337デフォルトの名無しさん (ワッチョイ 7b05-K1Ve)
垢版 |
2019/08/18(日) 14:04:52.38ID:APnDI8yA0
visualstudioを利用しているのですが最近デバッグ時にフォームアプリを動かすと
System.InvalidOperationException: '有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'hoge' がアクセスされました。'
の様なエラーが出て止まる様になりました
しかし出来たプログラムをふつうに動かす分には異常ありません
今まで作ってきた問題のなかったすべてのバージョンでこの様な現象が起こっています
これは何が原因でしょうか?
0338デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/18(日) 14:21:30.88ID:/RKifLkIa
>>335
騙されたらあかんw

継承後のフォームもちゃんとデザイナで開けるし
コントロールを追加したりいろいろ出来るよw

フォームの継承なんて10年以上やってなかったが
今実際試して確認したから間違いない
0343デフォルトの名無しさん (アウアウウー Sa5d-woyF)
垢版 |
2019/08/18(日) 17:55:07.39ID:/RKifLkIa
>>340
なるほど。

abstractにこだわる必要が本当にあるのかなとも思うけど、
何ならコンストラクタをprotectedにすりゃ機能的にはほぼ同じだね。
(abstractメンバーはもちろん書けないけど)

これならそういう不具合は起こらないっぽい
0344デフォルトの名無しさん (ワッチョイ d9da-QMAU)
垢版 |
2019/08/18(日) 18:33:20.50ID:5+yaTAKE0
蕎麦とラーメン間違えるとかもう簡単ケータイにしたほうがいいんじゃね。
たぶんVPNとか使わわんだろうし。
俺もIntelだからもう日産もゴーヤチャンプルーも同じ味付けで食える。
0345デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/18(日) 21:26:51.68ID:37ku1J740
Keyvaluepairの.Keyをnull判定したら
nullできました。

構造体だけどnull判定できましたが??
keyvalueopair本体はできないけど
KeyまたはValueはnull判定できました。

何故???まぁ良かったんですけど
0346デフォルトの名無しさん (ドコグロ MM63-h434)
垢版 |
2019/08/18(日) 21:29:43.77ID:jp7+H4+aM
それはKeyプロパティが返した値をnull判定しているのであり、KeyValuePairが構造体であることは全く関係ない
直行する問題の分離ができない人はプログラミング向いてないよ
0349デフォルトの名無しさん (ワッチョイ d968-2U8j)
垢版 |
2019/08/18(日) 21:37:51.98ID:37ku1J740
>>346
ようはList<KeyValuePair<string,double>>

"レタス" 100
"キャベツ"120
"トマト" 120

こういうリストで、ピーマンって探すと
Keyがnullになってくれたので、良かったです。
KeyValuepairがnullじゃないのが不思議ですが
null判定できてよかった
0350デフォルトの名無しさん (ワッチョイ a922-x+FD)
垢版 |
2019/08/18(日) 21:46:55.40ID:DxNAHPOT0
構造体はnullにできないと何度も言われてるのになんで不思議に思うんだろう
ピーマンを探すときのList.FirstOrDefault()の戻り値は
KeyValuePairをデフォルトコンストラクタで初期化したものだよ
0351デフォルトの名無しさん (ワッチョイ 8163-Lgl9)
垢版 |
2019/08/18(日) 21:48:35.09ID:FVnfIX0p0
>>349
keyvaluepairは構造体
構造体にはnullが存在しない
構造体にnullが存在しないことと構造体の中身がどうなっているか関係ないので、中身がクラスであるならnullにもなりうる
君がやったことは構造体ではなくその中身がnullかどうかのチェックしただけ
構造体とクラスの違いが理解できないなら今後も躓くのでkeyvaluepair含め他の構造体の使用も封印したほうがマシ
まぁintだって構造体だから全部避けるなんてことは無理だけど
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況