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


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



1 名前:デフォルトの名無しさん mailto:sage [2019/07/16(火) 15:36:23.74 ID:i1fbuZ/pM.net]
!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/

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

■情報源
https://docs.microsoft.com/ja-jp

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

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

371 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 12:07:05.62 ID:ZYeDXrpNM.net]
ILで説明してくれ

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

373 名前:でしょうか? []
[ここ壊れてます]

374 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 13:27:26.75 ID:ERfcd1se0.net]
>>359が返してくれてるだろ

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

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

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



378 名前:デフォルトの名無しさん [2019/08/19(月) 13:56:34.58 ID:eDOlyF+5a.net]
>>369
■ 選択肢1
FormにAddToLogみたいなメソッドを作ってConsole.WriteLineを
LogForm.AddToLog

■ 選択肢2
Console.WriteLineを、記録する文字列を通知するイベントに置き換える。
Formはそのイベントを拾ってListBoxに表示

後者を推奨
基本的にUIの参照を握らせるのは悪い手

379 名前:デフォルトの名無しさん [2019/08/19(月) 14:04:49.07 ID: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 名前:デフォルトの名無しさん [2019/08/19(月) 14:06:13.39 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 15:32:03.08 ID:ERfcd1se0.net]
なんでいきなりバックグラウンドワーカーが出てきてるか知らんけど、ドゥーワークは別スレッドで実行する内容を記載するところで、UIスレッドにアクセスしたらダメ→コントロールを触ったらダメ
リストボックスにアクセスしたかったらリポートプログレスもしくはコンプリートでUIスレッドにマーシャリングしてから

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

383 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:09:34.09 ID:2nNI8r3od.net]
普通にinvokeしなよ。

384 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 17:49:40.07 ID:VD+/iXFd0.net]
>>375
1.他のフォームからコントロールを操作する
https://dobon.net/vb/dotnet/form/accessanotherformdata.html
2.BackgroundWorkerからコントロール(UIスレッド)を沿操作する
https://dobon.net/vb/dotnet/programing/progressdialogbw.html またはInvoke
今の段階では1+2をやりたいんだよね

設計的なものに口だすのは良くないけど参考までに
>凄い長い計算なので計算中でもプログラムが反応する様に
ListBoxの一つのアイテムごとに時間がかかるのならMainProcessでループで一気にAddせずに
BackgroundWorkerの中で「計算実行→ReportProgressで別フォームListBoxにAdd」をループさ

385 名前:せてもいいんじゃないの []
[ここ壊れてます]

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

387 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 18:04:30.50 ID:V7QYb24CM.net]
関係なかった
自分が昔出なかったのは
AppendTextしてなかったからだったw

すまんかった



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

389 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 20:43:11.70 ID:y72D5AUNp.net]
>>380
ここおススメやぞ

https://blogs.msdn.microsoft.com/nakama/2009/03/30/part-1-windows/

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

391 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 21:00:04.04 ID:Vps+pUHe0.net]
>>380
delegate用のメソッド作ってdelegateにセットしてinvoke
https://www.atmarkit.co.jp/ait/articles/0506/17/news111.html

392 名前:デフォルトの名無しさん [2019/08/19(月) 22:54:50.46 ID:aQCsW5pK0.net]
doubleって整数のほうに偏りがあったら
小数部分は短い精度になるんですが、これ何とかなりませんか?
doubleは精度高いから小数点第5位とか精度余裕だろwwwwwwwwwww

989〜〜〜132.1235212596  算出結果
989〜〜〜132.1235312314 正解

え???????????
ちょwwwwww

助けてください

393 名前:デフォルトの名無しさん [2019/08/19(月) 23:06:59.10 ID:eDOlyF+5a.net]
>>384
何を言ってるか人に分かるように書かないと誰も答えようがないよw

一般論として、演算誤差を累積させずに
演算可能かどうかはどういう演算をしてるかによるので、
具体的な処理が分からないと何とも言えん

394 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:27:14.16 ID:9Ob07fGvd.net]
decimal型使えば

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

396 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:57:36.54 ID:0eZQgVij0.net]
分数型クラスを自分で作ってとっとけ

397 名前:デフォルトの名無しさん mailto:sage [2019/08/19(月) 23:59:07.58 ID:HKOIeNMl0.net]
Seleniumを極めよう



398 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:07:25.79 ID:VMXKYR4od.net]
Form1, Form2, CounterForm があります。

CounterForm にカウントを表示して、0 になったら、Form1 か Form2 のメソッドを実行するにはどうしたら良いでしょうか?

やりたいこと
5. 4. 3. 2. 1. 0 と表示 → form1.DoSomething();

CounterForm と Form1 の部分はできているのですが、
複数class間で通知する方法がよくわかりません。

399 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 00:22:58.41 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 01:06:30.58 ID: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 名前:デフォルトの名無しさん [2019/08/20(火) 01:15:05.72 ID:zheL5RcIa.net]
>>390
Formだろうが何だろうが、操作したい側が操作対象の参照を握れば良いだけだけど、
親子関係が成立しているとか特殊な前提がなければ、Formが別のFormの参照を
握るのはあんまり良くない。

原則論を言えばそもそもFormにUIと無関係の処理を書く時点で間違っている。

402 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 07:52:56.91 ID:yjnOK/Bv0.net]
UIと関係あるからフォームなんだろうけど…

非同期処理中にポップアップが出て、その間もメインは触れるが、終わるとメインが変更される
なんてことはよくある

書式設定的なのも別フォームから別フォームをいじるわけだし

前のいじり方を残すために、閉じても隠すだけで、同じインスタンスを再表示したい場合とか

403 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 09:26:58.30 ID:+NAZ1HN+M.net]
フォームと無関係な〜って書いてあるぞ

そんなことより全角半角がきもい

404 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:03:48.15 ID:NghMzgaN0.net]
対象のフレームワーク:Framework 4.0 でコンパイルした自作 DLL があります。
この DLL を 対象のフレームワーク:Framework 4.8 なプロジェクトから参照して使用したとき、
DLL の中はどっちで動くのでしょうか?

たとえば自作DLL内で、DataGridView から継承した DataGridViewEx を作ってあったとして
これを 4.8 なプロジェクトで利用したとき、DataGridViewEx 内で
4.0 の DataGridView が使われるのか、4.8 の DataGridView が使われるのか、って意味です。

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

406 名前:デフォルトの名無しさん mailto:sage [2019/08/20(火) 12:17:12.47 ID:NghMzgaN0.net]
自作DLL 側の System.Windows.Forms を見たら
特定バージョン:false
になっていたので、呼ばれる側のバージョンの System.Windows.Forms.dll が使われるってことですね。

Framework 4.8 用に新たに作らないといけないかと思ったのですが、その心配ないみたいで安心しました。

407 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:27:12.96 ID:7whQ/iRu0.net]
あ、間違えた
× this.Invoke( (MethodInvoker)delegate {
〇 static1.form1.Invoke( (MethodInvoker)delegate {
(thisは自フォーム内のマルチスレッド部分のソースだった)

カウントダウンにマルチスレッドが必要とは限らんが
むしろモーダルだったり
でも「オブジェクトがあれば必ず「通知」できる」という方法は確立しといた方が、オブジェクト指向っぽい
クラスオブジェクト指向の前にメッセージオブジェクト指向があったので(Win32API)
メッセージ、つまり「通知」



408 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 00:57:19.98 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/21(水) 01:36:11.80 ID:7whQ/iRu0.net]
>>400
そっちかw
そっちは「モーダルフォーム」でググると出てくると思う
その方が普通に基本

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

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

412 名前:デフォルトの名無しさん [2019/08/22(木) 16:57:22.84 ID:erkZnaOI0.net]
>>402
https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=411AC0000000128

413 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:10:49.32 ID:NpAwFZ6qM.net]
>>404
条文ぐらい示してやれよ

414 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 17:59:59.30 ID:90PkXrDL0.net]
色んなところで迷惑なヤローだな

415 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 21:54:01.43 ID:rNXeNA230.net]
>>402
非公開だろうがクライアント側で処理してるのには変わりないんだから
お前が本当にブラウザになり切れればやれるよ

単純に能力と手間の問題だ

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

417 名前:デフォルトの名無しさん mailto:sage [2019/08/22(木) 23:55:52.03 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/23(金) 00:00:27.51 ID: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 名前:デフォルトの名無しさん [2019/08/24(土) 00:16:35.07 ID:EZ15JXYo0.net]
アホな質問ばっかですいません
光速の計算をしたいんですが、doubleでは無理ですか?
decimalは使いません
お願いします。小数点以下が信用できません。

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

421 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 01:21:02.23 ID:g8XGZa5Z0.net]
>>411

422 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 08:41:25.65 ID:VP6gB9DD0.net]
質問いいですか、クラスの処理の途中経過をTextboxのコントロールに送りたいのです
public partial class Form1 : Form
{
Class1 class1 = new Class1();
}

class Class1
{
public Class1()
{
Form1.Textbox1.AppendText("Class1を実行しています");
}
}

このようにしてもForm1のインスタンスがないから実行できません
みなさんはクラスのログなどをテキストボックスに送るとき、どう書かれてますか?

423 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 09:03:40.17 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 15:23:44.45 ID:VP6gB9DD0.net]
>>415
レスさんくすです
上の方法でうまくいきました
クラスからコントロールを操作ってあまり使わない、というか推奨されてないのかな?

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

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

427 名前:デフォルトの名無しさん [2019/08/24(土) 15:56:01.09 ID:dsz+mirUa.net]
>>416
非推奨というか、普通はやりたいと思わないね。
何かの参照を握るってことはそれに依存してしまうってことだから。

Class1は本来はForm1の参照を持つ設計にしたことで、
事実上そのプログラム専用の他で流用できないコードになってる

他で使う予定ないからそれで問題ないと思うかもしれないが(以下略



428 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 19:37:50.96 ID:VP6gB9DD0.net]
>>417
確かにコントロールというぐらいだし

>>418
さんくす、実際にやる方法もわからなかったし、教えてもらったのはわかりやすかった
考え方を標準っぽいやり方に寄せたいのです

>>419
さんくす、なるほどパーツとして完成してないですね
汎用性の低いコードは改善しないと、でも今回はこれでいきます
logの取り方考えないと

429 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 21:52:23.83 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 22:59:49.50 ID:sQirZTQZ0.net]
よく答えられるな
なにをしようとしてるのかすらわからんわ

431 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:07:54.21 ID:VP6gB9DD0.net]
>>421
レスさんくすです
でもしかし、半分ぐらいしか理解できませんでした、スイマセン
〜解読中〜

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

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

434 名前:デフォルトの名無しさん mailto:sage [2019/08/24(土) 23:54:17.30 ID:GocaxRhS0.net]
>>422
さすがにそれはお前がアホやで

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

436 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 00:04:50.89 ID:dkxX1jtZ0.net]
俺もActionを推す

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



438 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 06:55:23.52 ID:Jlb1UCj1M.net]
>>414
こういうのってbindingでどうにかするものじゃないの?

439 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 07:21:22.29 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 09:33:25.01 ID:NieUwdLz0.net]
>>424
さんくす、スマートに書けそうですね、他の人もさんくす、ただ考え中
>>425
今回はイベントで、ただデリゲート勉強するいいちゃんす
>>429
さんくす、ググったら実現したいことをピンポイントっぽい
>>430
さんくす、binding、さらにむずい、今までと違うアプローチっぽい

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

hoge(list, listItem => new[] { listItem.A, listItem.B });

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

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

443 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:03:25.03 ID:4LqybIGY0.net]
Formのプログラムで普通に動作してたOpenFormDialogを使ってる箇所が突然フリーズしてしまいます。
一旦そうなるとWindows自体が不安定になり、他のプログラムで恐らくOpenFormDialogを使ってる所が全てフリーズしOSの再起動が必要になります。
どんな要因が考えられるでしょうか。

プログラムはかんたんなグラフィックエディタで矩形やテキストを移動したり変形する程度です

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

445 名前:デフォルトの名無しさん mailto:sage [2019/08/25(日) 22:13:53.33 ID:hYfvTIib0.net]
あ、残ってるってのはフリーズするバグを残してる環境の話ね

446 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 00:35:03.80 ID:D54D8pf80.net]
>>436
OpenFileDialogでした
cymon.sysの件は見つけましたけど家のPCにはありませんでした

地道にバグを見つけます

447 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:40:22.77 ID:YZSrPKBs0.net]
List<Employee> のIDとList<int> の一致するEmployeeを取得したいです。

List<int>をforeach、その中でList<Employee>をFirstOrDefaultで探して
新たなList<Employee>にAddする方法はできました。

これのforeachを撲滅して簡潔に書きたいのですがいい方法はありますか?



448 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 01:54:35.76 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 05:09:56.54 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 06:09:07.86 ID:LiZWIy1C0.net]
Find

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

452 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 08:56:15.22 ID:WqA3OufOM.net]
EnumSetってEnumの値を2のベキにすればいいから存在しないの?

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

454 名前:デフォルトの名無しさん [2019/08/26(月) 12:01:50.23 ID:EHOEsFfWa.net]
地下鉄漫才かよw

455 名前:デフォルトの名無しさん mailto:sage [2019/08/26(月) 16:00:24.81 ID:7fzFkpCMr.net]
execute
神がいかずちをもって手を下す

的な

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

457 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 07:54:15.38 ID:wbq0Lfqra.net]
おお、なるほど。LINQのクイズ集があれば面白そうだな。



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

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

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

461 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 19:15:36.40 ID:4aKZbpn00.net]
次のようなことをしたいのですが、どうすればいいでしょうか。
async、awaitを使えばいいようにも思えたのですが、クラス内のループが止まらず・・・

1.ボタン押下でとある処理をするクラスのインスタンスを生成し、クラス内で処理を無限ループ
2.ボタン押下でクラス内のループを停止

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

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

464 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 20:56:45.60 ID:LqXN8ItS0.net]
低レベルな実装だと終了フラグの参照を渡しておくとか

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

466 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 21:12:50.98 ID:4aKZbpn00.net]
皆さん、ご回答ありがとうございます。

>>454
停止メソッドにより、ループ条件から外れるフラグを立てて
処理停止させるイメージでしょうか。

>>455
CancellationTokenSource初めて聞きました。
便利ですね!

>>456
すみません。フラグでの終了処理しか思いつきませんでした・・・
もう少しマシな実装になるとどうなるのでしょうか。
教えてもらえると助かります。

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



468 名前:デフォルトの名無しさん mailto:sage [2019/08/27(火) 22:06:20.98 ID:GZd8Fc/Qp.net]
無限ループなんか組むな。

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






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

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

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