ふらっと C#,C♯,C#(初心者用) Part128 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/05/02(火) 22:05:40.13ID:OPFlvhxj
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part127 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489498042/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/05/28(日) 20:54:57.63ID:Q4IaIxAm
>>599
"c# webbrowser ie バージョン"でググると色々出てくるよ
要はレジストリを弄る必要がるんだが、プログラムから変更して戻すパターンも有るから
探すと良いよ
2017/05/28(日) 20:57:31.19ID:OzzF/wdK
>>602
599じゃないけど幸せになれた
605デフォルトの名無しさん
垢版 |
2017/05/28(日) 21:52:44.46ID:9tRj7diM
WPFのデータバインディングって速度速かったりするん?
コントロールとDBをリンク出来るような感じって思って良いんだよね?
2017/05/28(日) 22:14:28.21ID:kC4qoZB1
>>605
件数と使う「Control」によるらしい
607デフォルトの名無しさん
垢版 |
2017/05/28(日) 22:17:03.35ID:9tRj7diM
>>606
じゃあXMLに保存された1万件の音楽情報を
グリッドに展開するとしたら?
2017/05/28(日) 22:32:41.86ID:WRn0Vp2w
データバインディングの動きを理解してない以上
手を出さねーほうが無難じゃね〜の?
2017/05/28(日) 22:59:20.62ID:kC4qoZB1
>>607
一万件程度なら楽勝かと
2017/05/29(月) 06:23:33.57ID:KA+g5PFR
$$$4.3$$$
"V"="1.3335412","0","1","3Q",
611デフォルトの名無しさん
垢版 |
2017/05/29(月) 16:23:55.26ID:NQQqCKG9
↓このような処理があった時にbutton1を押して無限ループのタスクを実行した後に
button2のクリックイベントからtaskを止める方法ってありますでしょうか?どなたか教えてください

Task task;
private async void button1_Click(object sender, EventArgs e)
{
task = doTask();
}
private async Task doTask()
{
await Task.Run(() =>
{
while (true)
{
// 無限ループ
}
}
}
private async void button2_Click(object sender, EventArgs e)
{
// ここでtaskを止めたい
}
2017/05/29(月) 16:29:32.48ID:lQKC7nKu
>>611
フラグ作って無限ループ中にチェック
button2のクリックでフラグセット
2017/05/29(月) 16:38:30.94ID:KWmGTlOy
>>611
C#だとCancellationTokenSource ってのを使うのが定石だね
詳しくはwebで
2017/05/29(月) 16:57:00.21ID:XexF9nJM
>>611
こういう場合、無限ループの中でどんな処理を行う予定なの?
2017/05/29(月) 17:10:58.74ID:pjx27QrG
>>611
外側から強制的に止めたいとか思ってるならその発想は危険な考え違い
616デフォルトの名無しさん
垢版 |
2017/05/29(月) 17:31:52.87ID:NQQqCKG9
>>612
ボタン2はタスクを止める処理と書きましたが
実際にはonとoffの処理を兼ねているので
フラグを使った制御を行うと、例えばボタンを連打した時におかしな挙動なってしまうような気がします。

>>613
CancellationTokenSource ってタスクの中から制御するのかとおもってたのですが
外からでも制御できるんですね。調べてみます。

>>614
スクレイピングです

>>615
ちょっと気になるのでもう少しだけ詳しく教えて頂けますでしょうか?
2017/05/29(月) 17:49:34.30ID:pjx27QrG
>>616
普通に考えれば、ループを抜けるにはループの継続条件がfalseになるように変えてやるだけ

それなのに>>611みたいな質問をするのは、制御構造を無視して強制終了したいとか
考えてるんじゃないかという印象を持った。

普通はそんな必要はないよね。
そんな必要があるのは、デッドロックするバグがある、ソースをいじれないライブラリを利用する時ぐらい。
2017/05/29(月) 17:56:22.13ID:guqVR5DS
適切な処理をせずにスレッドを強制的に止めるのは設計がよくないという話、まあ気持ちは分かるけどね
2017/05/29(月) 18:00:17.76ID:cnTBcIoG
その前に終了処理したいのか一時停止したいのかで変わるだろうな
2017/05/29(月) 18:00:51.67ID:oHsWfsZc
>>617
Waitで長時間待ったりしてることもあるから、
こういうのはキャンセルで止めたほうが確実だよ
621デフォルトの名無しさん
垢版 |
2017/05/29(月) 18:15:18.42ID:NQQqCKG9
皆さんありがとうございました
フラグで制御すると無限ループ内のいたるところでgoto文を書かなきゃ行けないので
まずいかなと思っておりました
やっぱりキャンセルで止める方法を調べてみます。
たくさんのご意見大変参考になりました。ありがとうございました!
2017/05/29(月) 18:32:30.18ID:KWmGTlOy
>>617
フラグじゃHttpClientなんか止まらんでしょ
https://msdn.microsoft.com/ja-jp/library/hh551741(v=vs.118).aspx

CancellationToken 使って止めるのが普通です
2017/05/29(月) 19:24:40.20ID:pjx27QrG
>>622
俺の理解が間違ってるのかな?

確かにCancellationTokenSource使えばユーザーコードなしても実行前のタスクをキャンセルすることは
可能だと思うけど、一旦動き出したタスクを強制終了なんか出来ないと思うけど...
2017/05/29(月) 19:30:56.57ID:cnTBcIoG
外部exeとかもそうだけどキャンセルするからといってプロセスをすぐ殺す必要はないんだよな
>>623
安全に中断とかでなく止められれば何でもいいんだろ
質問者はもういないしスレ違いの方に行きそうだからその辺でやめてくれ
2017/05/29(月) 19:33:24.08ID:HUcfMRFq
>>623
俺も強制終了はされないという認識
タスク内のコードがトークンのキャンセルフラグチェックして終了処理をする必要があると思ってる
626デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:52:24.02ID:NQQqCKG9
質問者です

強制終了させる必要はなかったので
結局キャンセル入れてタスクのループから抜けるということにしました
↓一部抜粋ですが以下のような感じです。これ便利ですね勉強になりました

Task taskTest = Task.Factory.StartNew(() =>
{
while (true)
{
try
{
cancellationTokenSource.Token.ThrowIfCancellationRequested();
}
catch (OperationCanceledException oce)
{
break;
}
}

cancellationTokenSource.Dispose();
cancellationTokenSource = null;
}, cancellationTokenSource.Token);
2017/05/29(月) 20:24:05.73ID:TtK3Weat
例外投げるのって結構コストがかかるんだよな
それでもループ抜けるのに例外使う利点って何か教えて
2017/05/29(月) 20:30:33.89ID:UcFdrNFR
カッコいいじゃん
2017/05/29(月) 21:04:57.40ID:KWmGTlOy
>>626
恐らく問題ないと思いますがcancellationTokenSourceの後処理はfinally{}の中でやると尚良いですね

>>627
try catchを使えば、深い階層でも一気にcatchまで戻ってこられるので、キャンセルなど残りの処理をブッチするのに非常に都合がいい
キャンセルの処理だからこの程度のコストは考えなくてもいいからね
どうしても例外が嫌なら、CancellationTokenのフラグを見て戻る方法もあります
2017/05/29(月) 22:15:44.46ID:cP3symFG
>>623
Waitを潰せるから結果的にすぐ止まるんだよ
スレッドのInterruptと一緒だ
2017/05/29(月) 23:57:03.22ID:pjx27QrG
>>630
よく分からんなあ
http://qiita.com/laughter/items/75d943bb6d73a9796e58
この記事間違ってるのかね
2017/05/30(火) 00:17:48.17ID:7mmlzI+/
>>631
Thread.Interruptと一緒ってのが間違い。
その記事にあるように、対応メソッドだけキャンセル出来る。
Thread.Interruptみたいに無理やり止めるわけじゃないから、こっちのが安全。
2017/05/30(火) 00:28:00.84ID:7mmlzI+/
>>631
最近追加されたメソッドはCancellationTokenに対応したものが多いよ。
それらを使って組めば、タスクをすぐに止められる。
634デフォルトの名無しさん
垢版 |
2017/05/30(火) 00:30:40.38ID:iGfRfCvW
>>631
リンク先のコードは試すまでもない意味不明なプログラムだな
CancellationTokenでのキャンセルは自分でTokenを監視してキャンセル処理を書かないと何もしてくれない
Task作るときに渡しといたからって中断処理をしてくれるわけじゃない
だからこの結果は当たり前

CancellationTokenに対応してるメソッドはTokenを監視してその処理固有の何らかのキャンセル方法を使って処理をキャンセルしてる
Thread.Interruptとは違う
2017/05/30(火) 01:29:56.07ID:9DtCQxQF
>>612で良かったじゃんな
2017/05/30(火) 01:40:24.01ID:yo83A8ao
>>632-634
だから汎用性はないし、単純なループを抜けるだけなら
コードが複雑になるだけで単純にループの継続条件を操作する方法以上にメリットが
存在するケースはむしろ限られるわけで、>>611に勧めるのは不適切だと思うけど
2017/05/30(火) 02:03:42.90ID:7mmlzI+/
>>636
>>611の無限ループの中身がスクレイピング(>>616)って書いてあるんだから、意味あるでしょ。
HttpClientはCancellationTokenに対応してるんだから。
>>633に書いた通り、最近追加されたのは対応してるの多いよ。
2017/05/30(火) 02:06:44.79ID:yo83A8ao
>>637
あ、なるほど納得w
こんな時間にどうも
2017/05/30(火) 07:06:41.02ID:3LKQdhjH
>>612で良かったじゃんな
2017/05/30(火) 08:10:12.34ID:nt0s20eG
>>632,634
InterruptはSleepやロックを潰すだけだよ
従来Interruptで止めていたようなケースでは、自分でトークンの明示的なチェックなんていらなくて
呼び出し先の時間のかかるメソッドにトークンを適切に引き継ぐだけでいい(キャンセルされたら例外で止まるから)
基本的にスレッドをブロックするだけの同期処理とは違って、
async/awaitの場合は「待ち方」が実装に依存するので、最終的に「待っている」ところに限って
実装者がキャンセル処理を個別に実装する必要がある
そこ以外での扱いの考え方は基本的にはInterruptと変わらんよ
2017/05/30(火) 08:36:57.90ID:nt0s20eG
CancellationTokenの引き継ぎって明示的に渡さなくてもいいように実装できなかったのかな
一番深いところで例外を発生させるという、たかがそれだけのために途中の全てのメソッドに引数を追加しなきゃいけないのはイケてない
コンテキストを跨るから単純なスレッドローカルじゃ駄目なのはわかるけど、
そこだけSynchronizationContextみたいに手動でstaticプロパティから取ってきて明示的に引き継げばいいだけじゃないのか
それとも意図的に途中で連鎖を切るようなケースを想定してるのかな
2017/05/30(火) 08:50:03.66ID:nt0s20eG
あーでもキャンセルのハンドリング自体が非同期で行われるようなケースまで想定すると、
トークンをスレッドローカルにしたら無関係な他のジョブにまでキャンセルが伝播してしまうケースがあり得るね
やっぱりダメだな
2017/05/30(火) 09:01:41.80ID:+3RQshmo
>>612で良かったじゃんな
2017/05/30(火) 09:36:50.58ID:4zyQHZTY
>>643
良くないよ
呼び出した先のメソッドをどうやって止めるつもり?
そうやって、よくある止まらない停止ボタンが出来上がるんだよ
2017/05/30(火) 10:23:05.72ID:22c10yuY
>>644
それは別の問題だろ
2017/05/30(火) 10:34:03.46ID:22c10yuY
呼び出した先のメソッドの止め方が分からないだけで
フラグでいいよ
2017/05/30(火) 11:47:54.70ID:27U6uUbR
スクレイピングの処理時間の大半は、レスポンスが返ってくるのを待つ時間と受信処理
CancellationTokenならそれを中断できるけどフラグ処理じゃ手も足も出ない

まあ作っても役立たずのゴミクズボタンが出来るだけだな
2017/05/30(火) 13:19:04.25ID:iGfRfCvW
>>640
従来Interruptで止めてたケースってなんだよ
ここでやってるスクレイピングのためのネットワーク処理はInterruptじゃ止まらないよね?

InterruptとCancellationTokenの類似性って見た目何らかの処理を中断して戻れるってだけでしょ、そんな事は指摘するまでもないし
それ以上は内部実装なども全然違うものだよ

もっと言うとCancellationTokenはキャンセル処理を統一的に扱うインターフェースでInterruptはその実装の一つと見れる
しかしCancellationTokenの実装としてスレッドのInterruptを使っているものは少なくともIO処理ではないでしょう
実際FileStreamのキャンセル実装はwin32apiのCancelIoEx使ってたし
ネットワーク系のもそんな感じでしょ
2017/05/30(火) 13:27:52.68ID:yiTLmUbP
>>647
それと611の処理となんの関係があるの?
650626
垢版 |
2017/05/30(火) 14:31:20.95ID:Wk6Gc0Fl
昨日はタスクのキャンセルの件ありがとうございました。大変助かりました。

そして、また連日の投稿となってしまい申し訳ありませんが
現在また原因不明の現象に悩まされていて困っております。
もしよかったらどなたか解決して頂けませんでしょうか?

seleniumを使ったプログラムなんですが
一度遷移先でタイムアウトが発生してしまうと
それ以降別ページへの遷移ができなくなってしまうというものです。
そもそもなんでタイムアウトを設定しているかというと
重たいページであっても一定時間すぎたら無条件で次ページへ遷移してほしいからです
どなたか解決方法がわかる方お答え頂ければと思います。

ソースは以下のような感じです

webDriver = new ChromeDriver();
// タイムアウトを2秒に設定
webDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));

foreach (string UrlString in UrlList){
try
{
webDriver.Navigate().GoToUrl(UrlString); // 一度タイムアウトが発生すると次回以降遷移出来ない
}
catch (OpenQA.Selenium.WebDriverTimeoutException) { }
}

※UrlListには適当なURLがいくつかはいっております
度々すみませんがどうぞよろしくお願いします。
2017/05/30(火) 14:47:13.92ID:4zyQHZTY
>>649
関係ないと思うなら多分君はキャンセルフレームワークの使い方を勘違いしてるんだろうな
CancellationTokenは同じものを引き回して使うの
受け取ったCancellationTokenを呼び出し先のメソッドにそのまま渡すことで、
キャンセル要求時に処理がどのメソッドにあったとしても関係なく例外を起こして潰すことができる仕組みだ
2017/05/30(火) 14:57:38.82ID:yiTLmUbP
>>651
そんな仕組み誰も提供して欲しくないと思うわwww
653626
垢版 |
2017/05/30(火) 15:23:37.93ID:Wk6Gc0Fl
自分の質問のせいで争いが起こってしまうとは・・・
申し訳ないです。。
2017/05/30(火) 15:50:05.28ID:r/CU7EmN
気にすんな

タイムアウトしたら次、ってことはCookieの引き継ぎとかどうでもいいってことになるけど
それなら新しくChromeDriverをnewするって雑なやり方は?
2017/05/30(火) 16:48:13.36ID:Wk6Gc0Fl
はい、クッキーはどうでもいいです
ただchromedriverをnewするとブラウザが新たに立ち上がっちゃうのでなるべく同じブラウザのまま対応したいです
2017/05/30(火) 18:28:13.59ID:nt0s20eG
>>655
それだけが理由ならPhantomJS使えば済む話じやね
657デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:00:00.41ID:9pAG49er
あの…WPFとUWPはどっちが速いですか?
優秀な方教えてください
2017/05/30(火) 19:01:21.46ID:Z7PF006I
>>657
form最強
659デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:01:55.63ID:9pAG49er
>>658
エェッo┤*´Д`*├o
2017/05/30(火) 19:09:08.93ID:27U6uUbR
>>657
UWPが桁違いに早い。特に起動時
661デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:10:38.44ID:9pAG49er
>>660
起動確かに速いな
常にスタンバってるのかな
2017/05/30(火) 19:18:21.10ID:27U6uUbR
>>661
.netと違って、ライブラリの中で使うクラスだけ抽出してスタティックリンクするから
ロードするサイズが全然違いますね
2017/05/30(火) 19:22:45.51ID:5LsaYMbU
ある意味「石器」最強かもねw
2017/05/30(火) 19:24:02.22ID:Q5Vu0cbW
>>656アプリに色々スクレイピングしたデータを表示させたいんです
665デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:27:03.66ID:9pAG49er
>>662
ほえー
アプリ開発者と関係なくUWPがそういう仕組みになってるってこと?
2017/05/30(火) 19:27:17.24ID:nt0s20eG
>>664
それとPhantomJSじゃ駄目というのとがどう繋がるのか分からん
ブラウザも表示しておく必要があるのか?
667デフォルトの名無しさん
垢版 |
2017/05/30(火) 19:28:41.25ID:9pAG49er
>>650
お前エロ動画自動収集作ろうもしてるだろ
俺にはわかるぞ
2017/05/30(火) 19:33:16.73ID:Q5Vu0cbW
>>666
PhantomJSからwindowsアプリにデータの受け渡しをすればいいって事ですか?
タイムアウトの問題を解決するためだけなのにすごく二度手間な事してるような気がしてしまいますが・・・
2017/05/30(火) 19:34:33.06ID:Q5Vu0cbW
>>667
いえ違います
2017/05/30(火) 19:40:27.25ID:27U6uUbR
>>665
まあそんなところ。その他.net nativeだから、ライブラリもCLiじゃなくて普通のバイナリだから立ち上がった後の反応も全然違いますよ
2017/05/30(火) 19:42:58.08ID:n5zRqOxX
UWPは起動は遅いだろ
くるくるばっかしてる
672デフォルトの名無しさん
垢版 |
2017/05/30(火) 20:29:50.15ID:PLPV+qTT
class ClassA
{
public override bool Equals(object obj)
{
if (this == obj)
{
return true;
}
else{
return false;
}
}
public override bool GetHashCode() { }
}

static void Main(string[] args)
{
ClassA a1 = new ClassA();
ClassA a2 = new ClassA();
bool b = a1.Equals(a2);
}

GetHashCodeなしだと警告がでるんですが、この場合GetHashCodeのコードはどう書けばいいでしょうか?
2017/05/30(火) 20:48:23.05ID:nt0s20eG
>>668
いやブラウザが開くのが嫌ならヘッドレスなドライバを使えばいいだろと言ってるだけなんだが
2017/05/30(火) 20:53:25.27ID:sRXo2Yu8
>>672
コンストラクタで乱数生成してそれ使ったら?
2017/05/30(火) 21:27:08.94ID:/DgUh2Dj
>>672
とりあえず動けばいいだけなら
public override int GetHashCode() {
return 1;
}
でもいい
http://blog.masakura.jp/node/35
2017/05/30(火) 22:40:18.35ID:GhBAathx
便乗で質問だけど、オブジェクトの等価検査で使われる値が変化した時は
ハッシュコードも変えないとまずいよね?
2017/05/30(火) 22:43:36.35ID:kWERrntF
>>676
変えなくてもハッシュテーブル系のパフォーマンスが落ちるだけ、それで使わんなら適当でいい
678デフォルトの名無しさん
垢版 |
2017/05/30(火) 23:44:25.77ID:PLPV+qTT
>>674 >>675
お2人のレスでGetHashCodeがintを返すものだと気づきました。
いろいろ漁ってみたんですが、this.GetHashCode()の方が1より速いみたいなんでこれで行こうと思います。
レスありがとうございました。
679デフォルトの名無しさん
垢版 |
2017/05/31(水) 00:37:06.72ID:lBEWYtx2
Formアプリで登録リスト一覧みたいなものを表示させたいんですが、DataGridViewみたいな感じにしたい時は何を使いますか?
2017/05/31(水) 01:04:50.93ID:XimrquBh
DataGridView
2017/05/31(水) 01:46:52.64ID:zMZ0t3dm
意図が全く分からん
2017/05/31(水) 02:01:48.65ID:toHF4qpw
マジキチ
683626
垢版 |
2017/05/31(水) 05:04:07.36ID:zbjxMbd2
>>673
いえブラウザが開くのは問題ないんですが
タイムアウトが発生するたびにブラウザを開き直すのはちょっと問題があります
なにか他に方法があればいいんですが・・・
2017/05/31(水) 06:29:23.93ID:+xjBJZk4
>>683
対象のページを手動で開いてるってことか?
2017/05/31(水) 06:30:10.04ID:+xjBJZk4
>>683
対象のページを手動で開いてるってことか?
2017/05/31(水) 06:39:24.23ID:zbjxMbd2
すいません質問がかなり流れてしまってるのでもう一度書かせていただきます

seleniumを使ったプログラムなんですが
一度遷移先でタイムアウトが発生してしまうと
それ以降別ページへの遷移ができなくなってしまって困ってます
そもそもなんでタイムアウトを設定しているかというと
重たいページであっても一定時間すぎたら無条件で次ページへ遷移してほしいからです
どなたか解決方法がわかる方お答え頂ければと思います。

ソースは以下のような感じです

webDriver = new ChromeDriver();
// タイムアウトを2秒に設定
webDriver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2));

foreach (string UrlString in UrlList){
try
{
webDriver.Navigate().GoToUrl(UrlString); // 一度タイムアウトが発生すると次回以降遷移出来ない
}
catch (OpenQA.Selenium.WebDriverTimeoutException) { }
}

※UrlListには適当なURLがいくつかはいっております
度々すみませんがどうぞよろしくお願いします。
2017/05/31(水) 09:22:20.58ID:7bh7QxEt
>>667
俺の時代はjpeg画像だったわ
688デフォルトの名無しさん
垢版 |
2017/05/31(水) 10:03:22.46ID:bfprNrby
お世話になります。
ある二次元のArrayListがありまして、
そのArrayListのある1行だけをまるまる別のListへコピーしたいのですが、
色々調べても書き方がわかりませんでした。
どのように書けば良いのでしょうか。

型は全要素がstringになっているという前提で良いです。
2017/05/31(水) 10:10:44.40ID:bfprNrby
688ですが、一旦質問を取り下げます。
二次元のArrayListではなくて、string配列のArrayListでした。
頭の中を整理してからまた質問させていただきます。
2017/05/31(水) 11:11:33.20ID:YxSv7yTD
Comparison<T>をIComparer<T>に変換する機能って用意されてないよねやっぱり

デリゲートは拡張メソッドも変換演算子も定義できないし、古典的なユーティリティークラスで
やるしかないのかな
691デフォルトの名無しさん
垢版 |
2017/05/31(水) 11:41:32.37ID:vbSdRoYa
そういうライブラリを探す手間が大変
高級言語ってそれが面倒
最初っから当てにしない方が精神的に良いのがわかってても
あるはずだと思って探す
2017/05/31(水) 14:16:43.04ID:Z1ZTId/u
>>690
ん?
public static IComparer<T> ToIComparer<T>(this Comparison<T> cmp)
って定義できたし呼び出しもできたけど VS2015
2017/05/31(水) 15:14:41.46ID:SYDtjKSh
あれ、デリゲートの拡張メソッドって定義できないと思い込んでたけど勘違いか。
ジェネリックの制約か何かとごっちゃになってたかな
2017/05/31(水) 15:17:45.21ID:YmmFUVDx
そんなことするより普通にnew MyDelegateComparer(comparison)でいいだろ
変なごちゃ混ぜユーティリティクラスに依存するよりよっぽどマシ
695686
垢版 |
2017/05/31(水) 15:44:13.55ID:zbjxMbd2
ここでもだれもわからないんですね・・・
どうすればいいんだろう・・・
2017/05/31(水) 15:53:10.88ID:RyxKgJ03
人生の無駄だと気付け
697デフォルトの名無しさん
垢版 |
2017/05/31(水) 19:20:18.69ID:EmdHwMni
Null許容型の話ししてもいいですか?
2017/05/31(水) 19:25:07.13ID:pBTVyMi8
駄目だと言ったらどうする!
2017/05/31(水) 20:58:06.31ID:P4eqmxhP
ASP.NET Identityって要するにユーザー情報やロール情報のリポジトリを注入するだけで認証処理が機能するようになるよって感じ?
2017/05/31(水) 21:18:26.40ID:rluwNjli
>>689
ArrayListは過去の遺物だ。
新規で作っているならList<T>を使った方が良い。
2017/05/31(水) 21:36:24.45ID:PjLtCLFm
いつも思うけど、こういう奴誰に向かって威張ってるつもりなのかね
っていうかそれがそんな偉そうに言うような話かw
馬鹿じゃねえのほんっと
2017/05/31(水) 21:38:57.89ID:L1juUrGR
>>700
arraylistを使うとどんなデメリットが有るの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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