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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part133
http://mevius.5ch.net/test/read.cgi/tech/1510056685/
■関連スレ
C#, C♯, C#相談室 Part95
http://mevius.5ch.net/test/read.cgi/tech/1508180530/
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/

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

■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2018/01/09(火) 08:58:27.18ID:jhkCquMi6
>>416
hoge(arg=1, args=2, arcs=3, n=2)

argsの配列感がない上に1,2,3っていう順番付けが曖昧

hoge((arg=1, 2, 3,) n=2)

こんな文法を作ったとしても、もう配列で良いよねってなる

説明させんなよメンドくせえな
2018/01/09(火) 12:19:24.01ID:EqlP/XAyr
なぜ>>417はこの程度の理解で答えたがるのか?
他人事と思わず皆考えてみよう
2018/01/09(火) 12:47:31.69ID:p+9rZZ3s6
具体的に指摘できないなら喋んな
420デフォルトの名無しさん (ブーイモ MM0f-jqvb)
垢版 |
2018/01/09(火) 12:48:02.08ID:xZogmC5hM
>>419
同意する
2018/01/09(火) 12:48:04.59ID:tXr0nFdK0
rubyも昔は可変長引数は最後の仕様だったけど、今は途中でも大丈夫になってる
結局は作ってる人のやる気次第だな
2018/01/09(火) 12:59:33.58ID:jhkCquMi6
>>421
無理矢理でもやってるやつもあんだな。

ま、>>407
「ちょっと考えれば分かるだろ質問すんな」じゃなくて、
『は?なんで可変長だけ順番変えねえの?キモッ。』って思われるかもしれないから、納得できるように付け加えただけな。
2018/01/09(火) 17:14:14.89ID:GTddlW8V0
rubyってオーバーロード出来るの?
424デフォルトの名無しさん (ワッチョイ bbeb-nOrU)
垢版 |
2018/01/09(火) 18:29:21.69ID:TMj71yN00
async/awaitを使った際の実行の流れの図があったら誰か見せてくれんかな
2018/01/09(火) 18:34:44.72ID:KiSnx3XP0
>>424
https://www.google.co.jp/search?q=c%23+async+await+sequence&;tbm=isch
2018/01/09(火) 18:38:13.58
awaitのコードがコンパイラでどう変形させられるかの記事見たほうが分かりやすい
http://tech.blog.aerie.jp/entry/2015/08/29/022932
427デフォルトの名無しさん (ワッチョイ bbeb-nOrU)
垢版 |
2018/01/09(火) 18:57:43.08ID:TMj71yN00
ありがとうございます
図はよくわからなかった点も多いので、ゆっくり記事を読んできます
2018/01/09(火) 21:30:26.03ID:ENZhQsZea
>>424
@ITの記事にはシーケンス図っぽいのが載ってるよ
http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_02/masterasync_02_01.html
2018/01/10(水) 01:25:16.09ID:rjHbKDY9a
>>428
こう言う間違った図が人を惑わせる
2018/01/10(水) 01:27:32.14ID:rjHbKDY9a
よくみたら間違った図ではないが
使う上でなんの説明にもなってない図に訂正

この図だけをみると初心者がハマる
2018/01/10(水) 01:37:54.23ID:9VtjyWrsa
↑の人はたぶんコードと図で1セットになってることに気付かずに
図だけ見てそう言ってるか、あるいはなんか思いっきり勘違いしてるだけだと思うから
安心して参考にしていいと思うw
2018/01/10(水) 01:50:58.29ID:rjHbKDY9a
説明するのが非常に難しいんだけど

async/awaitの挙動をまともに書いてる記事が少ない
有名人でも間違った解説をしてる
2018/01/10(水) 01:55:51.66ID:rjHbKDY9a
>「メソッドを一時中断し、awaitされた処理の完了を待って残りの処理を再開する」
非常にグレーな表現

>@に続けてAの処理が別スレッド上で開始される
非常にグレーな表現

HevyWork()の中身が必ずすべて別スレッド上で行われてるわけではない
2018/01/10(水) 01:58:10.55ID:av8HDoY10
正しい図を描いてアップしてもらえませんか
2018/01/10(水) 01:59:38.89ID:rjHbKDY9a
出来たら苦労しない

場合訳が複雑なので
非常にめんどくさい
2018/01/10(水) 02:01:30.99ID:9VtjyWrsa
言っちゃ悪いけど、これも立派な2ch脳だね
羊たちの沈黙にあった台詞だけど、その批判的精神を自分自身に向けるだけの理性はないのかw
2018/01/10(水) 02:02:34.65ID:9VtjyWrsa
>>434
いや、>>428の記事は十分わかりやすいし間違ってもいないから安心していいよw
2018/01/10(水) 02:03:23.76ID:rjHbKDY9a
それぞれがそれぞれの心の中でお前が言うなと思う

上にあった図を参考にしてるといつか全然思った通りに動かなくなり?マークになる
439デフォルトの名無しさん (ワッチョイ 9f7c-Ogju)
垢版 |
2018/01/10(水) 05:30:31.38ID:t7WvUySz0
UnityってC#どのくらい使えると触れるの?
440デフォルトの名無しさん (ワッチョイ 0f80-41Gj)
垢版 |
2018/01/10(水) 07:12:09.78ID:8FRtzSYP0
初めてのJavaScript 第3版、オライリー、2017

JS には、async/await が無いから、
この本では、generator runner の仕組みを説明している。
co, Koa というライブラリを使う

非同期処理は異なるコンテキストで、
別のスレッド・プロセスだから、どこを実行しているのか分からない。
実行順番も制御できないし、例外処理も使えない

generator runner は非同期処理を、yield で待つように作る。
これにより、非同期処理を同期処理のコンテキストに当てはめるから、
実行順番を制御できるし、例外処理も使える

try{
yield promise 非同期処理
} catch {
}
2018/01/10(水) 07:52:38.82ID:8FRtzSYP0
異なるコンテキストとは、同じソースコードに書いていても、
OS から見ると、別のプロセス・スレッド・実行単位になる

OS は、1秒間に数万回も、実行単位を切り替える(コンテキストスイッチ)から、
今、別の実行単位の、どのコードが実行されているかは、全く分からないし、制御もできない

別の実行単位に対してできることは、
タスクの終了を待つか、タイムアウトするか、タスクを止めてもらうかだけ
2018/01/10(水) 07:54:58.52ID:dKgg5RtTd
>>440
>JSには、async/awaitが無い
何言ってんの?
2018/01/10(水) 08:02:12.05ID:hRyz+G9b0
句読点君のレスを判定するアルゴリズムを作ろう
機械学習の勉強によさそう
2018/01/10(水) 08:27:22.17ID:fLUpXSTQ0
>co, Koa というライブラリを使う

あぁ、このアホか。C#スレまで出張ってきてうざいな。
2018/01/10(水) 10:57:56.79ID:zuSWugfya
話の流れが見えない
非同期処理的
446デフォルトの名無しさん (アウアウカー Sa4f-Sycn)
垢版 |
2018/01/10(水) 15:47:45.43ID:0NEBj+IAa
C#始めて1カ月程度の初心者です

trackbarの値をBackgroundWorkerに渡して、その値を使って別スレッドで画像を生成して、whileとReportProgressでtrackbarの変更に合わせて画像を表示していくプログラムを作っているんですが、

trackbarの値をBackgroundWorker_DoWorkに渡すのってどうやるんですか?

別スレッドなので、trackbar.Valueでそのまま使う事ができなくて…
デバッグ無しの実行ならよく分からないですが、そのまま使っても実行できて上手く画像表示されている事が確認できたので、
スレッド間でtrackbarの値を渡すのだけが上手くいかなくて悩んでます
2018/01/10(水) 15:54:42.58
トラックバーの値変更イベントのイベントハンドラでフォームのフィールドにトラックバーの値を保持しておく
それをバックグラウンドワーカーで読み取る
448デフォルトの名無しさん (ガックシ 067f-Sycn)
垢版 |
2018/01/10(水) 16:15:46.81ID:+iIpBJgq6
>>447
それって両スレッド共通の変数を作っておいてトラックバーが動いた時のイベントハンドラでその変数に値を保存していくって事ですよね?
それも試したんですが、よくわからないエラーが発生して動作が止まってしまいました
2018/01/10(水) 16:16:37.99
それか、Invokeでアクセスする



// コントロールが破棄されてないかチェック
if (trackbar.IsDisposed)
return;


var value = 0;

// Invokeが必要かチェック
if(trackbar.InvokeRequired) {
Invoke((MethodInvoker)(() => {
value = trackbar.Value;
}));
} else {
value = trackbar.Value;
}
2018/01/10(水) 16:19:33.71
>>448
じゃあ、値変更イベントハンドラ内でトラックバーの値をフィールドに設定するところと、バックグラウンドワーカーでそのフィールドから値を読み出すところを、lock{...}で囲む
451デフォルトの名無しさん (ブーイモ MM7f-jqvb)
垢版 |
2018/01/10(水) 16:24:33.20ID:yZjeHBZDM
その処理は別スレッドでないと出来ないのか?
という身もフタもない突っ込み
2018/01/10(水) 16:33:02.39
lock (トラックバーの値を保持してる変数) { ... } のミスでした
453デフォルトの名無しさん (ガックシ 067f-Sycn)
垢版 |
2018/01/10(水) 16:33:27.10ID:+iIpBJgq6
>>450
ちょっと用事ができたので今は試せませんが、両方試してみます

>>451
割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついてしまったので、分離したいんです
2018/01/10(水) 16:35:01.84
>>453
async/awaitでいいのでは?
455デフォルトの名無しさん (ガックシ 067f-Sycn)
垢版 |
2018/01/10(水) 17:01:05.31ID:+iIpBJgq6
>>454
課題でバックグラウンドワーカー指定されてたので、
それ初めて聞いたんですが、同じような事が出来るんですか?
2018/01/10(水) 17:06:36.89ID:5BQfLz2R0
>>455
BackgroundWorkerは、標準機能で専用のeventargを使ってオブジェクトを一つ引き渡せたはずだが
マニュアルしっかり見たほうが良いよ
457デフォルトの名無しさん (ガックシ 067f-Sycn)
垢版 |
2018/01/10(水) 17:17:37.84ID:+iIpBJgq6
>>456
それってバックグランドワーカーを開始する時に値を渡す事ですか?
WhileとReportProgressで画像表示していて、バックグランドワーカーは止まらないので開始時の値を引き渡すのだけでは、トラックバーの値変更に対応できなさそうですが、できるんですか?
的外れな事言ってたらすみません。
まだ学び始めたばかりでわからない事だらけなので

ちなみに画像生成に使うトラックバーは7本あります
2018/01/10(水) 17:18:24.71
>>455
async/awaitならイベントハンドラの中に1行で非同期処理書ける
課題なら仕方ない
2018/01/10(水) 17:42:20.90ID:8CBJwk4h0
>>448
処理イベントを多重呼び出ししていない?
busyのときは呼ばないように
>>446
>whileとReportProgressでtrackbarの変更に合わせて
ReportProgressでは元のスレッドのコントロールにアクセスできるからこの意味がいまいちわからないが
とりあえず
・BackgroundWorker_DoWorkに渡す
https://dobon.net/vb/dotnet/programing/displayprogress.html#backgroundworker
呼び出す側
int value=trackbar.Value;
BackgroundWorker1.RunWorkerAsync(value);
Do_Work側
int value=(int)e.Argument;
>>453
>割と重い処理なので、同じスレッドのトラックバーのイベントハンドラで処理を行うと、トラックバーの動きがかくついて
かくつかない程度に仮処理用の縮小画像を作る
>>457
>トラックバーの値変更に対応できなさそうですが
リアルタイムに反映は理屈から言うと無理
処理量が少なければそう見えるようにも作れるから画像が大きければトラックバー動作中は縮小画像で
2018/01/10(水) 17:43:56.21ID:ZlAR0fHNa
>>455
>>446と同一人物?

仕様の詳細が分からんので断定はできないけど、
断片的な情報から判断すると

(1) 無限ループでTrackbar.Valueをポーリングして

(2) 変化を検出したら画像生成を開始

(3) 完了したらBackgroundWorkder.ReportProgressを呼んで
UIスレッドで画像を表示

こういうこと?
もしこうなら、スレッドで無限ループ回すって発想がたぶん間違ってる。

諸事情でBackgroundWorkderを使う必要があるにしても
Trackbar.ValueCangedイベントでBackgroundWorker.RunWorkerAsyncを
呼んで都度画像生成処理を開始するようにした方がいいんじゃないの?

それならTrackbar.ValueはRunWorkerAsyncの引数で渡せる
2018/01/10(水) 17:51:28.39ID:8CBJwk4h0
>>460
ブラウザ部分同じだから同一人物で間違いない
>>457
次からレス番でコテハン付けて
一応捕捉でRunWorkerAsyncの引数はobjectなので
https://msdn.microsoft.com/ja-jp/library/f00zz5b2(v=vs.110).aspx
受ける側でキャストしたらListでも配列でも使える
2018/01/10(水) 17:54:40.44ID:ZlAR0fHNa
ただこの場合でも、ValueCangedはたぶんユーザーがつまみを動かかしている間は
逐次的にイベントが発生しちゃうと思うから、BackgroundWorker.RunWorkerAsyncを
コールするのは、例えばValueCangedが発生しなくなってから1秒後、みたいな工夫がたぶん必要になるのかな

知らんけど
2018/01/10(水) 18:00:54.81
>>459
起動時にRunTaskWorkerを呼び出す。

doWorkでは無限ループでトラックバーの値の変更を監視

こういうことだと思う。
知らんけど。
464デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/11(木) 01:51:14.39ID:fK8uCW920
public void testA()
{
bool error=false;

error=true;
if (error == true) { return; }

textBox1.Text = "ok";
}

error=true;
if (error == true) { return; } をまとめてメソッドtestBにするにはどうすればいいでしょうか
testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
textBox1.Text = "ok";を実行しない
というプログラムを作りたいのですが
2018/01/11(木) 02:26:04.02
これじゃダメ?
―――――――――
...
var error = testB();
if(error) return;
...
―――――――――
public bool testB(){
var error=false;
error=true;
if(error) return true;
retrun false;
}
―――――――――
466デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/11(木) 02:53:49.75ID:fK8uCW920
>>465
やはりtestBメソッドの後で判定するしかないですよね。
ありがとうございます。
2018/01/11(木) 04:20:02.74ID:9ePH9NvT0
Janeでいう画像のようなフォームを作りたいのですが、
フォームにはどのようなコントロールを配置しているのでしょうか?
列名にはButton、一覧はListBoxのように見えます。

https://imgur.com/a/mOqw6
2018/01/11(木) 07:57:27.54ID:W1ryMExAM
>>464
> testAの中でtestBを実行し、testBでエラーが出たらtestAもそこで処理を中止して
> textBox1.Text = "ok";を実行しない
例外で一気に抜ければいいだろ
2018/01/11(木) 09:55:11.66
>>467
ListBoxのViewプロパティをDetailsにしたやつと同じ
上のボタンはColumnsプロパティで編集できる
2018/01/11(木) 09:58:05.61
あと、多分FullRowSelectプロパティをオンにしないと行をクリックしたときに一列分しか色が付かない
2018/01/11(木) 11:50:13.87
ListBoxじゃなくてListViewだったわ
472デフォルトの名無しさん (ワッチョイ 4a0f-nl4B)
垢版 |
2018/01/11(木) 18:47:50.43ID:9ePH9NvT0
>>469,>>470
ありがとうございます
1つのコントロールで実現できるのですね
作るときにFullRowSelectも意識してみます
473デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)
垢版 |
2018/01/12(金) 02:16:04.35ID:gpUPMxg50
今ってC#なら何でもできる時代か?webページもゲームもWindowsアプリもandroidも
2018/01/12(金) 08:59:21.85ID:uVEH64eZ0
初めて目にしたものに万能感を感じてるだけ、刷り込みという
2018/01/12(金) 09:11:32.29ID:2hN5vnhI0
でもここまで全部作れる時代ってないんじゃん?
全部c言語の時代以来だな
2018/01/12(金) 09:13:00.90
さすが大企業
2018/01/12(金) 09:23:53.14ID:4yLgM4ukM
アプリ開発言語としてはWebのフロントエンドを除けばほぼ何でもできるので
目下最も万能な言語であることには違いないが、道具を前提にして物事を考える癖がつくと頭悪くなるから一つに拘るのはお勧めしないな
2018/01/12(金) 09:27:14.08
>道具を前提にして物事を考える
解説頼む
2018/01/12(金) 09:28:54.75ID:4fjc3EU00
金のハンマーか
ハンターチャンス
2018/01/12(金) 09:48:35.89ID:2hN5vnhI0
まあ、なんでもいいしね
msにはsilverlightに騙されたのでこの辺の信用は薄い
481デフォルトの名無しさん (ブーイモ MM0a-EosG)
垢版 |
2018/01/12(金) 09:54:47.82ID:1+438Ej9M
>>477
WebのフロントエンドはhtmlとJavaScriptという道具を前提とするしか無いが。
482デフォルトの名無しさん (ブーイモ MM0a-EosG)
垢版 |
2018/01/12(金) 09:58:40.77ID:1+438Ej9M
>>480
騙されたと言うかJavaScriptの進化が速くてJavaアプレットもオワコン
2018/01/12(金) 12:31:07.50ID:nUBs6Y0Hp
なんかWeb系の人多いね
Webとは一切関わらずに来たから
色々と世界の違いを感じるわ
484デフォルトの名無しさん (スッップ Sd0a-6CSh)
垢版 |
2018/01/12(金) 12:34:17.17ID:OH7R1+qFd
でぇじょうぶだ。wasmがくる。
2018/01/12(金) 12:55:06.39ID:sc59V6rza
直接の原因はセキュリティ対策を名目にしたプラグイン排除の動きでしょ
2018/01/12(金) 14:37:46.31ID:2hN5vnhI0
>>483
そっちはついで
サーバー側がメインに決まってんじゃん
片手間で意外と時間がかかるのがムカつく
画面なんかデザインと相談しろよ
487デフォルトの名無しさん (ワッチョイ 9ee7-p0TQ)
垢版 |
2018/01/12(金) 14:42:53.15ID:VxcDYdZu0
職につくために限定的な開発だけじゃあ厳しいなってC#なら何でも作れるようにならないとなって思って
2018/01/12(金) 14:44:49.67
使う言語はおまえが決められないけどな
2018/01/12(金) 14:44:55.45ID:2hN5vnhI0
>>487
逆引き辞典でも買っとけ
〜できる?って聞かれたときいいぞ
2018/01/12(金) 16:00:59.66ID:C/maxB41p
スタブってのがほんとに分からん…
どんな知識が必要でどんな風に使うのかイメージ出来ん
DAO?とかの概念が自分になくてSQLを扱う部分とロジックがごっちゃになってるとそもそもスタブでなんとかしようってレベルですらないのかな
なにか猿でも分かるような記事とかないですか…
491デフォルトの名無しさん (ブーイモ MM81-EosG)
垢版 |
2018/01/12(金) 16:11:30.81ID:mLvyYLexM
>>490
スタブってテスト用のダミーの事?
2018/01/12(金) 18:24:00.26ID:C2fpfp9ga
>>490
スタブはテストのためのダミーだよ

完成まで一時的にいれておいてビルド通したり
テストで実際の環境に影響をおよぼさないために使う

テストしない
完成まで途中で実行しない
ならいらない
2018/01/12(金) 18:39:16.58ID:2hN5vnhI0
酢豚
2018/01/12(金) 19:18:31.62ID:Oe9MQ/U/0
裸の豚がいる、素豚
2018/01/12(金) 19:54:46.80ID:Q+CtiLx/0
>>494
それは地雷踏んでるし素マ○だし。
2018/01/12(金) 20:48:40.23ID:sVH4h8AJ0
ここ雑談所とかロビーじゃないんで
リンクテンプレにあるんだからワッチョイの無い相談室でやればいいのに
2018/01/12(金) 20:54:57.06ID:Oe9MQ/U/0
>>495
http://nicogame.info/watch/sm4260808
所さんのスブタ
2018/01/13(土) 01:59:49.10ID:zim/eiwV0
sqlserverからレコード取得する処理で、dataReaderを別関数に渡して、
そっちでdataReader.Iten("hogehoge")するのってありですか?

一部のカラム名だけが異なる類似レコードの取得処理をまとめたいなあと
2018/01/13(土) 08:43:16.67ID:YXV8ZXe20
>>498
それ自体は特に問題はないけど、可能ならDapperとか使った方がいい
2018/01/13(土) 08:44:56.00ID:GojsaP7Y0
>>498
その手の仕事なら、拡張メソッドで書くとスッキリ書けるよ
2018/01/13(土) 10:33:11.79ID:8qhapkmN0
>>498
Itenがなにかはわからんけど、dataReader を渡すのはありでしょ
2018/01/13(土) 11:39:34.05ID:bohsitgJ0
Itemなんだろうなぁとは思ったよ
503デフォルトの名無しさん (ワッチョイ 66e8-QpsD)
垢版 |
2018/01/13(土) 15:48:07.46ID:J9QLRP4o0
ItemItemって考えてるとあいてむってなんだっけ?ってなるよね
2018/01/13(土) 16:27:23.47ID:bohsitgJ0
普通省略するからな
2018/01/13(土) 17:00:38.69ID:jdkhpG2m0
データが大量の場合は予めカラム名から序数取得しておいて、序数指定にするんだっけか
今はDapperばかりだから忘れたわ
2018/01/13(土) 17:42:17.67ID:GYwe1Ej/0
ダッパーってなあに?
2018/01/13(土) 17:43:12.24ID:LGXgKIg90
結局、DB扱わせたらCOBOL最強という結論か。
2018/01/13(土) 18:22:41.37ID:2EuaVelH0
一時期ORMが流行ったがメモリ食いすぎと重すぎて今じゃBI以外で使う機会がない
軽量wrapperを挟んでクエリ直書きの負担を軽減するというのが最近のスタイル
有名なのはDapper、Massive、PetaPocoとか
2018/01/13(土) 19:33:09.67ID:9/EYlaQy0
>>508
Micro-ORM ですか、Java にはあまりなさそうですね
BI ってなんの略ですか?
2018/01/13(土) 22:23:31.56ID:zim/eiwV0
498だす
いろいろありがとう
Dapperって知らなかったので調べてみます
2018/01/14(日) 11:58:36.30ID:6wMaD5Pe0
質問させてください
まず、やりたいことは以下です
@c#からネイティブライブラリの関数を呼び出す
A引数としてマネージ側で実装した関数を渡し、ライブラリ側でその関数を呼び返す

Aでマネージ関数と一緒にマネージドオブジェクトを渡したいのですが、そのオブジェクトをGC対象から除外する方法が分かりません
GCHandle.Alloc では blittable なオブジェクトでないとダメだと怒られます
List<int> とかを渡したいのですが…… どうしたらいいでしょうか?
2018/01/14(日) 12:44:23.20ID:DNkTPWoH0
>>511
普通にデリゲートをマーシャリングして渡す
呼び出す先が同期的な関数ならGCは考慮不要
非同期的にコールバックしてくるならデリゲートをフィールドに入れておいてGCを防ぐ
デリゲートのマーシャリングは非常に優秀で、メソッド内から外のローカル変数を参照してたりインスタンスフィールドを参照してたりしても問題ない
だからList<int>とかをわざわざ渡す必要はない
2018/01/14(日) 12:45:29.88ID:DNkTPWoH0
補足
メソッドから参照されてるオブジェクトはデリゲートが生きてる限りはGCされないので、
GC対策としてはデリゲートだけフィールドで保持しとけば十分
2018/01/14(日) 13:56:18.92ID:6wMaD5Pe0
>>512
ありがとうございます!
解決しました。変数をキャプチャしてるラムダ式でもOKなんですね
これって実行時にコードを生成してるんでしょうか?
515デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 08:04:36.45ID:wzT+kwGj0
visualstudio2015でifの条件式の部分が
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
b>1&&
c>1&&
d>1)
ときれいに揃える方法はないでしょうか?
ctrl+k,ctrl+dではこの部分だけきれいにならず困っています
516デフォルトの名無しさん (ワッチョイ 39f7-RcqZ)
垢版 |
2018/01/15(月) 08:05:35.73ID:wzT+kwGj0
if(a>1&&
b>1&&
c>1&&
d>1)
となっているのを
if(a>1&&
__b>1&&
__c>1&&
__d>1)

_はスペースです
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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