[過去ログ] ふらっと C#,C♯,C#(初心者用) Part138 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
131: (ドコグロ MM29-1Yxh) 2018/06/15(金)07:16 ID:Cd+XXhnVM(2/2) AAS
これまで歩んだ人生がゴミ
132: 前スレ976 (ブーイモ MM62-C226) 2018/06/15(金)07:27 ID:A2l2tHW6M(1) AAS
>>119
ありがとうございます

bitarrayってのがあるらしいんですけど、これって共用体とかに一括で代入できないんですかね
3バイトデータの内の下位1バイトは1bitごとのフラグなのでbitarrayで分解できそうなんですが
133
(2): (ワッチョイ c211-jgxh) 2018/06/15(金)09:16 ID:rymWY0Tx0(1/3) AAS
そういえばちょっと疑問なんだけど、enum定義する時に>>119みたいにbyteとか指定するのは何か意味があるの?
指定したところでbyte型の変数に代入しようとしたらキャストしなきゃいけないし、やる意味がわからないんだけど
134
(1): (ワッチョイ 31b5-8opj) 2018/06/15(金)09:22 ID:BTgSia3a0(1/2) AAS
>>133
え?キャスト?
135: (ワッチョイ c211-jgxh) 2018/06/15(金)09:45 ID:rymWY0Tx0(2/3) AAS
>>134
え?
136: (ワッチョイ 31b5-8opj) 2018/06/15(金)10:04 ID:BTgSia3a0(2/2) AAS
ああ、enumで作った型なんだからenum型になってるだろ。
受ける変数も同じ型じゃないとダメなのは当たり前。
137
(1): (ワッチョイ e227-hwPK) 2018/06/15(金)11:52 ID:jCp8kGwY0(1) AAS
>>133
シリアライズとかネイティブとの相互運用目的
138
(1): (ササクッテロ Spf1-8opj) 2018/06/15(金)11:58 ID:6Dx/uRsOp(1) AAS
動的にenumで作った型のsizeof求めりゃいいんだが、静的に解決しなきゃならない時は指定するしか無いって話だよな?
139
(1): (ワッチョイ d2eb-hrcC) 2018/06/15(金)12:03 ID:AMC7cROI0(1/4) AAS
>>116-117
コンパイル時点で型が定まらない(実行時に型が決まる)ものを new する手段という風ですよね?
使えそうです。ありがとうございました。

あとは、外部から「型」を受け取って new するまでの間、保管しておきたいのですが
型を変数(プロパティ)に格納するにはどうしたらいいんでしょ
140
(1): (スフッ Sd62-pByW) 2018/06/15(金)12:20 ID:NFN3YtCpd(1/2) AAS
>>139
117はジェネリクスなのでコンパイル時には一応定まってるハズ。
型を変数に入れたいならインスタンス.GetType()か、typeof(型)で、Type型の値が取れるけど…
本当にやりたい事と、実装の方法(型を受け取ってインスタンスを作ってそのメソッドを呼ぶ)がズレてないか心配。
141: (ワッチョイ c211-jgxh) 2018/06/15(金)12:25 ID:rymWY0Tx0(3/3) AAS
>>137-138
なるほど、さんくす
142
(1): (ワッチョイ d2eb-hrcC) 2018/06/15(金)12:48 ID:AMC7cROI0(2/4) AAS
>>140
ありがとうございます。
「型」を格納する変数の型は System.Type なんですね!!
やりたいことが出来ました!!

System.Type t = typeof(××フォーム);  ← ここのところを公開して外部からセット

var f = (System.Windows.Forms.Form)System.Activator.CreateInstance(t);
f.ShowDialog();
143
(1): (アウアウエー Sa4a-jhA2) 2018/06/15(金)12:57 ID:PdS4cleJa(1/2) AAS
>>142
それさあ、キャストしてる時点で何の意味があるんだと思わなきゃw
144
(1): (ブーイモ MM6d-l11B) 2018/06/15(金)13:10 ID:VuRl2MkoM(1) AAS
>>143
Showなどのフォーム共通の操作をしたいんだろう
基底クラスにキャストする分には意味はある
設計として正しいかどうかは別問題であり今の情報だけでは何とも言えないが、
君は自分の個人的な好みを一般常識であるかのように主張して相手の事情を理解しようとせず人を一方的に批判する傾向があるようだね
145
(2): (ワッチョイ d2eb-hrcC) 2018/06/15(金)13:16 ID:AMC7cROI0(3/4) AAS
本当は自作インターフェースを持った「なにか」から派生するクラスなのですが
そこまで書くと行数が凄いことになるので、Form を例にさせてもらいました。
146
(1): (ワッチョイ c2d2-bwM/) 2018/06/15(金)13:30 ID:/HLz/tc50(1) AAS
>>145
本当は何がしたいの?
147: (アウアウエー Sa4a-jhA2) 2018/06/15(金)13:36 ID:PdS4cleJa(2/2) AAS
>>144
そういうのはFafcoty Method的な方法でやればいい。

最初から質問者が何か勘違いしてるだけだと言ってるが、
>>114-115みたいな方法論を取る必要は何もない。

お前ごときに俺の何が分かるんだアホか
その批判、お前自身にちゃんと向けているか?

自己分析一つできない奴に限って安易に他人を批判したがるから笑える
148: (ワッチョイ d2eb-hrcC) 2018/06/15(金)14:16 ID:AMC7cROI0(4/4) AAS
>>146
基底クラスから派生したクラスを動的に生成します。

142 みたいな方法が出来ることを知らなかったので
switch 〜 case でクラスの種類だけ new() やってたところをキレイにします。
149: (スフッ Sd62-pByW) 2018/06/15(金)15:03 ID:NFN3YtCpd(2/2) AAS
>>145
それは自作インターフェイスに「『自作インターフェイスをもった何かのインスタンス』を返す関数」を定義しておいて、
何かの方で「その関数」を実装して、
呼び出す側では普通に「その関数」を使えば良いのではなかろうか。
抽象クラスと静的関数の方がキレイかな。

「その関数」のリストが作りたいなら、そこでやっとリフレクションで取ったらいいし。
いきなりCreateInstanceは宜しくないというか危ないし、後々、各小クラスでコンストラクタがどうしようもない状況に陥ると思うよ。
150: (ワッチョイ c29d-zq67) 2018/06/16(土)00:47 ID:i9Db63x30(1) AAS
Dynamicは黒歴史ですか
151: (ワッチョイ 9d17-Bw3Y) 2018/06/16(土)08:04 ID:axPFqDQY0(1) AAS
いいえ
152: (スップ Sdc2-bwM/) 2018/06/16(土)08:10 ID:YoGVHqI7d(1) AAS
うんにゃ
153
(1): (ブーイモ MM6d-l11B) 2018/06/16(土)08:34 ID:eKBdC14eM(1) AAS
むしろ.NETのメインストリームがWebに移ってからはdynamic使われまくってる
JSONデータをたくさん扱ってるといちいち型付けてられない場面が多い
154: (ワッチョイ 892b-z7gc) 2018/06/16(土)09:57 ID:fkqp7HMy0(1) AAS
自作のインタプリタ作った時に
Dynamic使った記憶がある

意図は・・忘れたww
155: (スップ Sdc2-bwM/) 2018/06/16(土)10:02 ID:v/kjTt9Bd(1) AAS
>>153
jsonからクラスへの変換なんてVisualStudio使えば一瞬じゃない?
156: (ドコグロ MM62-1Yxh) 2018/06/16(土)10:04 ID:ayiE9VmyM(1) AAS
大規模プロジェクトなら連想配列禁止は納得できる
157
(1): (ワッチョイ c251-G00F) 2018/06/16(土)12:20 ID:omCaDuHT0(1/9) AAS
教えてください。
戻り値が async Task のメソッドで await を使わないと↓のような警告が出ます。

> CS1998 この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
> 'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を
> 使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。

独立したメソッドなら、await が必要ないなら async Task をやめて void にすればいいのですが、
仮想呼び出しなどの関係で戻り値を変更したくない場合の解決策に悩んでいます。
省5
158
(1): (アウアウウー Saa5-l11B) 2018/06/16(土)12:52 ID:Ws4rvThPa(1/2) AAS
>>157
2が正しい
159
(1): (ワッチョイ 31b5-8opj) 2018/06/16(土)12:56 ID:dmQidkOU0(1/3) AAS
同期的に結果が分かるものを非同期にして結果が欲しいとか、コールバックでも仕込んで別処理で結果得ないと正しい結果なんて分からないだろうに。
160: (ワッチョイ c251-G00F) 2018/06/16(土)13:16 ID:omCaDuHT0(2/9) AAS
>>158
レスありがとうございます。やはり他に正しい方法はないのですね。
非同期が必要になるまでは同期実行できるのが async の効果だと思っていたので
非同期が全く必要ないときに async が使えないのは逆のような気がして
違和感が拭えないのですが、とりあえず [2] の方法でやっていこうと思います。

>>159
申し訳ないのですが、同期ついて理解不足で仰っていることが理解できないので
省1
161
(3): (ワッチョイ 0699-pByW) 2018/06/16(土)13:59 ID:VCIrJNT80(1) AAS
await Task.Run(()=>やりたいこと)
で済ますのはどうなんだろ。
162
(2): (アウアウウー Saa5-l11B) 2018/06/16(土)14:16 ID:Ws4rvThPa(2/2) AAS
>>161
無駄にスレッド消費するしマルチスレッドによる不要なトラブルを持ち込む可能性もある最低最悪の方法
awaitを外したくないなら await Task.CompletedTask の方がクリーン
163: (ワッチョイ c251-G00F) 2018/06/16(土)14:42 ID:omCaDuHT0(3/9) AAS
>>161
レスありがとうございます。せっかくなのですが、私もその方法はあまり良くないと思います。
ご存知でしたら失礼を許していただきたいのですが、以下の2つの効果は同じではないのです。
async Task X() => Thread.Sleep(1000);
async Task Y() => await Task.Run(() => Thread.Sleep(1000));

>>162
確かに await Task.CompletedTask をどこかに挟むだけなら
省7
164
(1): (ワッチョイ 2ec9-Bw3Y) 2018/06/16(土)14:59 ID:ext5YZxs0(1) AAS
これあえて警告出しっぱなしじゃ駄目なのかね
IDEがasyncメソッドをawait無しで実行しているから警告しているだけであって、意図的に同期実行するのならコメントとかで明示しておけば良いような気もするけど
165: (ワッチョイ c251-G00F) 2018/06/16(土)15:23 ID:omCaDuHT0(4/9) AAS
>>164
レスありがとうございます。
たかが警告を消すために実際のコードを書き換える必要があるのかという考えは
実にごもっともだと思います。
ただその場合、警告を抑制するだけでも意図は十分に伝わると思うのですが、
やはり警告はそのままにしてコメントなどで説明を行うべきなのでしょうか。
166
(2): (アウアウエー Sa4a-jhA2) 2018/06/16(土)15:24 ID:gQX30pFpa(1/2) AAS
#pragma warningディレクティブ使って警告を抑止するのが一番素直のような気がする。
知らんけど

っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...
167
(2): (ワッチョイ c251-G00F) 2018/06/16(土)15:35 ID:omCaDuHT0(5/9) AAS
>>166
レスありがとうございます。やはり警告の抑制も選択肢になりますよね。
警告を抑制することに対する考え方は人それぞれということもあると思いますので、
その都度状況に応じた対処法を考えるのが一番でしょうか。

> っていうか、asyncなしで問題ない前提なら最初から何も悩む必要ないと思うんだけど...

申し訳ありません。これについてよく意味が理解できませんでした。
詳しくご説明していただけないでしょうか。
168: (アウアウエー Sa4a-jhA2) 2018/06/16(土)15:46 ID:gQX30pFpa(2/2) AAS
>>167
ごめん後者アホなこと言いましたw

よく考えてみたら、asyncが付くかどうかはただのメソッドの中の実装によって決まる話であって、
ベースクラスやインターフェイスによってそれが強制されることはないよねw

普段深く考えずに使ってることがばれちゃったw
169
(1): (ワッチョイ 31b5-8opj) 2018/06/16(土)16:13 ID:dmQidkOU0(2/3) AAS
なぜ同期させているのかが根本的に分かって無いから、警告を解く事だけに注意が向いてるんだな。
同期が必要ならコードどころか構造を変えるくらいしないてならないだろうに。
170
(1): (ワッチョイ 4206-Bw3Y) 2018/06/16(土)17:10 ID:b9GFXH4k0(1) AAS
状況把握しきれていないが
async()=>{}という形でラムダにasyncつけることで解決できるケースもあるんじゃね?
171: (ワッチョイ c251-G00F) 2018/06/16(土)17:13 ID:omCaDuHT0(6/9) AAS
>>167
ご説明ありがとうございます。 >>166 で仰っていた意味が理解できました。
async/await は糖衣構文なので確かにベースクラスなどで使用が強制されることはありませんが、
深く考えずに使えるところが糖衣構文のいいところですし、
async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。
これを踏まえて、改めて >>166 にお返事したいと思います。
省10
172: (ワッチョイ c251-G00F) 2018/06/16(土)17:18 ID:omCaDuHT0(7/9) AAS
>>170
レスどうもありがとうございます。
このような返しばかりで情けないのですが、理解力が足りず仰っていることがよくわかりませんでした。
申し訳ありませんが詳しいご説明をお願いできないでしょうか。
173
(2): (ササクッテロ Spf1-8opj) 2018/06/16(土)18:03 ID:AoXX/TDlp(1) AAS
先ず、同期と非同期で何が違うのか、
同期は目的の処理を完了して戻って来る事が大前提で作られている。
非同期は目的の処理を行う指示だけをして戻って来る。
だから戻り値も自ずと意味が違って来るのが普通。
同期の戻り値は実行結果、非同期の戻り値は指示出来たかどうかで結果はまだ分からない。
そこを根本的に間違えているから、問題なんだよ。
174
(1): (ブーイモ MM6d-l11B) 2018/06/16(土)18:08 ID:40YgBCHOM(1) AAS
>>173
基底クラスやインターフェイスに合わせるためであったり、
後でDB使った実装に変更する予定で今はハードコードしておくみたいなときには普通にあるケースだよ
後で非同期に変えるのは影響が大きいからね
175: (ワッチョイ c251-G00F) 2018/06/16(土)21:30 ID:omCaDuHT0(8/9) AAS
>>173
レスどうもありがとうございます。
同期処理と非同期処理の違いは、一般論としてはおっしゃるとおりだと思うのですが、
それが >>174 でご指摘いただいているような目的を達成する上で障害になっていて、
そのような問題を解消するために async/await 構文が作られたのではないでしょうか。
だとすると、同期処理と非同期処理の違いを理由に await なしの async を
否定することは本末転倒のように感じてしまうのですがいかがでしょうか。
省4
176
(1): (ワッチョイ 31b5-8opj) 2018/06/16(土)21:44 ID:dmQidkOU0(3/3) AAS
まあ、メイン処理止めていいなら待てばいいじゃない。
止めたく無いならポーリングやコールバックで終わったの知ればいいじゃない。
コーディングでワーニング出るから構造を弄るって手法そのものが間違いって言ってるの。
177: (ワッチョイ c251-G00F) 2018/06/16(土)22:10 ID:omCaDuHT0(9/9) AAS
>>176
メイン処理を止めたくないならポーリングやコールバックを明示的に記述する以外に
選択肢がないというように読めてしまったのですが、この部分に間違いはないでしょうか。
もしそうなら async/await 構文についてあまりお詳しくないようにお見受けしますので、
よろしければ一度お触りになってみてください。
非同期処理の大変さをご存知であればこそ、便利さを実感できるのではないかと思います。

(ちなみに、今の問題は非同期処理を行うことも可能なメソッドをオーバーライドする際に
省2
178
(1): (ワッチョイ c29d-zq67) 2018/06/17(日)00:16 ID:hCSOxZ9X0(1) AAS
そもそもasync修飾子そのものには、たんにawaitする目印としての意味しかないわけで
awaitしないメソッドをasyncにするのが根本的におかしいとしか思えんのだが
179: (ワッチョイ 2ee8-xBpi) 2018/06/17(日)04:27 ID:f8Zp6PCK0(1) AAS
wpfのフォームってhtmlとcssが合わさったようなもん?
180
(2): (ワッチョイ c251-G00F) 2018/06/17(日)05:09 ID:w8cOZ/cU0(1/3) AAS
>>178
async Task Hoge() { }
↑は警告は出るもののコンパイルできますが
Task Fuga() { }
↑はコンパイルすらできないので、async がたんに awaitするための目印というのは語弊があるのではないでしょうか。
181
(1): (ワッチョイ edd3-Bw3Y) 2018/06/17(日)10:24 ID:g+98DwlT0(1/3) AAS
> async を使うメソッドに XxxAsync という名前をつけることが推奨されていることからも、
> 事実上 async/await を使うかどうかはベースクラスに依存していると言っていいと思います。

TAPはTaskを返す関数の実装にasync/awaitを強要せんし使う側も関知せんじゃろ
AsyncサフィックスなんてそれこそEAPの頃からの慣例でしかない

awaitを使わず何故か付いてるasyncよりTask.CompletedTaskを返すコードの方がよほど明確だと思うがね
182
(1): (ワントンキン MMe1-qG2Q) 2018/06/17(日)11:46 ID:IxLGC6rAM(1/2) AAS
>>180
ただの目印と理解していいよ
asyncって目印を見つけたらメソッド内だけ文法をちょっと変えますねっていう取り決めなの

目印もなしに勝手に文法を変えられたら仕事にならん
だから目印が必要なの

目印を付けただけでエラーになると言うけど
目印を付けたら文法が変わるのだから同じコードでエラーが出たってなにもおかしくないだろう?
183
(1): (ワッチョイ c251-G00F) 2018/06/17(日)12:14 ID:w8cOZ/cU0(2/3) AAS
>>181
レスどうもありがとうございます。

async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
async Task SayHello2() { await SayHello(); await SayHello(); }
async Task SayHello1() { await SayHello(); }

は問題ないのに

async Task SayHello0() { }
省13
184
(1): (アウアウエー Sa4a-jhA2) 2018/06/17(日)12:46 ID:JpLAIDLea(1) AAS
結局質問者の疑問はこういうこと?

(1) サブクラスで非同期メソッドとして実装される可能性があるメソッドの名前は
Asyncでサフィックスすべきか?

(2) (1)がYesの場合、そのメソッドが非同期で実装されなくても(awaitを含まなくても)
asyncで修飾すべきか?

正解はYes-No?
理由は、非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
省3
185: (ワッチョイ c251-G00F) 2018/06/17(日)13:22 ID:w8cOZ/cU0(3/3) AAS
>>184
整理していただきどうもありがとうございます。

(1) については実は疑問であるという認識をもっていたわけではなく、
ご指摘をいただくまで当然そうするべき事柄であると考えておりました。

(2) がまさに疑問点でして、(1) が Yes/No のどちらであっても
答えが得られると嬉しいと思っています。

> 非同期メソッドは使う側がそれを非同期メソッドだと理解している必要があるのに対し、
省7
186
(1): (ワントンキン MMe1-qG2Q) 2018/06/17(日)14:33 ID:IxLGC6rAM(2/2) AAS
>>183
気持ち良い悪いみたいな感覚の話にすると結論が出なくなる

・コードに統一感があったほうが気持ちがいい(俺はこの感覚がよくわからんが)
・使ってないものを使いますと宣言するのは気持ちが悪い

どっちも言い分としては間違いではないしどちらがより正しいかとも言えない
それは見た人によるとしか言えない
君が美しいと思って書いた統一感のあるコードは、俺からすれば必要のない無駄な記述の多い汚いコードに見えるかもしれない
省5
187: (アウアウウー Saa5-m0US) 2018/06/17(日)21:01 ID:6Wp8R37qa(1/3) AAS
・スレッド生成
勉強してから言えよって思う
188: (ラクッペ MM61-h/p3) 2018/06/17(日)21:08 ID:rRGqqoATM(1) AAS
あーこれゴミクズにありがちな燃えるコメントの仕方だわ
言い争いが始まるので、賢明な諸兄は3日ほどスレを閉じておくのがよろしい
189: (ワッチョイ ddc3-ttgq) 2018/06/17(日)21:15 ID:Z+AbfkC70(1) AAS
静的メソッドの中で動的メソッドって呼び出せないってあるけど、自分のクラスのインスタンスのメソッドは呼び出せるの?教えて雑魚
190
(1): (アウアウウー Saa5-m0US) 2018/06/17(日)21:27 ID:6Wp8R37qa(2/3) AAS
> async Task SayHello3() { await SayHello(); await SayHello(); await SayHello(); }
> async Task SayHello2() { await SayHello(); await SayHello(); }
> async Task SayHello1() { await SayHello(); }

と書くより引数nで実行回数を渡してforループで制御したらいい
n=0でasync awaitのペアがあるにかかわらず一度も実行されないawaitのついたメソッドができる
勿論警告もでないし誰かの言う一貫性のある美しいコードじゃないか
191
(1): (アウアウウー Saa5-m0US) 2018/06/17(日)21:32 ID:6Wp8R37qa(3/3) AAS
わかってると思うけどawaitがついたメソッドに突入した時点で
内部が自動的に別のスレッドで実行されるわけじゃない
中に入っても最終的にタスクにたどり着かないと別スレッドはスタートしない

System.Threading.Thread.CurrentThread.ManagedThreadIdでスレッドIDがでるから確認したらいい
192
(1): (アウアウカー Sa69-qcd4) 2018/06/17(日)21:38 ID:7lB5BPvGa(1) AAS
>>191
await後に書いた処理って元のスレッドに同期されると思ってたけど、awaitで実行されたスレッドのまま進むよね?
Formアプリであれ?invokeしなくていいの?って思った記憶ある。思い違いだったらすまぬ
193
(2): (ワッチョイ e227-Ly5g) 2018/06/17(日)21:42 ID:62NxCwPo0(1) AAS
非同期自体が複雑だし、(当時は)新しい構文ってことで、混乱を少しでも減らすために警告にしてるだけっぽいね
抑止しちゃっていいと思うよ
194: (ワッチョイ edd3-Bw3Y) 2018/06/17(日)22:13 ID:g+98DwlT0(2/3) AAS
>>193
Formが作成された所謂UIスレッドでは同期されるが、コンソールアプリ等では同期されない

もうちょい突っ込むと、await文が実行されるスレッドにSynchronizationContextへの仕込みがあるかどうかで違ってくる
await後に実行されるスレッドはSynchronizationContext.Postの実装により決定される

Winformsは最初のフォーム作成時にWindowsFormsSynchronizationContextを現在のスレッドに設定し
WindowsFormsSynchronizationContext.Postはメッセージループを仲介してUIスレッドでawaitの続きを実行する

具体的な実装はReference SourceやmonoのWindowsFormsSynchronizationContextを読むのが良い
195: 194 (ワッチョイ edd3-Bw3Y) 2018/06/17(日)22:18 ID:g+98DwlT0(3/3) AAS
安価まちげーた>>192

なんかテキトーに書いたら分かりにくいな・・・
要はWinforms(WPFも同様)のスレッドでawaitするとその後の文は裏で勝手にControl.Invokeされてると思えばええねん
196
(2): (ワッチョイ c29d-zq67) 2018/06/18(月)03:16 ID:tq92Vuqu0(1/2) AAS
>>180
>Task Fuga() { } はコンパイルすらできない
それは戻り値のチェックで、int Fuga...でもコンパイルできないだろ
Taskもasync/awaitも関係ない話

むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
つかほんとにこれ警告だけで通って正常に動くの?
そのときHoge()で何が帰ってきてるんだ?
197
(1): (ワッチョイ c29d-zq67) 2018/06/18(月)03:36 ID:tq92Vuqu0(2/2) AAS
まあその例で統一したやり方でやりたいなら
async Task SayHello0() { await Task.CompletedTask; }
で良いんじゃないのか
198
(2): (ワントンキン MMe1-qG2Q) 2018/06/18(月)07:05 ID:5zfP7m4zM(1) AAS
>>196
最適化してCompletedTaskでも返すのかなとも思ったけど
IL見ると他と同じようにコード生成して実行してんね
このオーバーヘッドが必要な処理なら警告を無視してasync使えばいいと思う
199: (アウアウエー Sa4a-jhA2) 2018/06/18(月)10:59 ID:ubyRHWyfa(1) AAS
どう考えても質問者の方がよく分かってるのに
何も分かってない奴に限って上から目線で偉そうに何か言ってるのは滑稽過ぎるねw

気付いてないのは本人だけ(とすら気づいてない)のも何とも笑いを誘う
200: (ワッチョイ e2c3-LKVd) 2018/06/18(月)11:33 ID:jfMWOsL40(1) AAS
質問者のドメイン知識の話だろ。

質問者以外に、このスレどんなエスパーいるのか?
201
(1): (アウアウウー Saa5-Bw3Y) 2018/06/18(月)12:52 ID:omBcANz0a(1) AAS
実際にawaitされることで呼び出し側が想定されることが実現されるなら
たとえ何もしない無駄なスレッドを使用したとしてもそれが一番いい
最適化されて何もしないとなればUIスレッドなどの副作用を期待していた呼び出し側が困る
実際はそういうことはおこらないので問題ない

上に書いてあったawait Task.CompletedTask;が一番いい答えだと思う
202
(2): (ワッチョイ ddc3-JWO0) 2018/06/18(月)17:06 ID:wetnizJS0(1) AAS
プログラミングってさあ、基本を使い倒すほうがいいの?
203: (ワッチョイ c251-G00F) 2018/06/18(月)18:38 ID:rGsHjxJX0(1/2) AAS
皆さんレスどうもありがとうございます。

>>186
スレッド生成はともかく、無駄をなくすという観点は重要ですね。
>>198 に書いていただいてあることも踏まえると、
> しかし文法上の間違いではないのでエラーと断言することもできない
> 間をとって警告を出すってのが妥当な落とし所じゃないかな
というご意見は実に的を射たものであるように感じました。
省18
204
(1): (ワッチョイ c251-G00F) 2018/06/18(月)18:39 ID:rGsHjxJX0(2/2) AAS
>>196
> むしろ、async Task Hoge() { } がタスク戻さないのにコンパイル通ることのほうが問題じゃね
> つかほんとにこれ警告だけで通って正常に動くの?
> そのときHoge()で何が帰ってきてるんだ?
確かに一見すると不思議ですよね。
このあたりの詳しい話は TaskAwaiter で検索するとお知りいただけると思います。

>>197 >>201
省18
205: (ワッチョイ 067f-s84n) 2018/06/18(月)18:46 ID:XI+GT1Uo0(1) AAS
>>202
何が聞きたい

旅行ってさあ
車で行ったほうがいいの?
→目的地や条件による
206: (ブーイモ MMb6-l11B) 2018/06/18(月)20:44 ID:/4T5LZMPM(1) AAS
>>202が一を聞いて十を知る頭の良い人間なら先に一通り言語をマスターした方が効率的
そうでないなら最初から高度な機能を覚えてもそれが何の役に立つのか理解できないから、まずは基本だけで身をもって苦労したほうがいい
207: (ワッチョイ c29d-zq67) 2018/06/19(火)05:31 ID:R/zbDFZs0(1) AAS
>>204
そもそもawait なしの asyncが必要な理由も場面も思い浮かばんが
自分一人でやってるなら好きにすればいいんじゃね

最適化うんぬんを言うなら、Taskを返すどころかそんな呼び出しそのものが不要じゃね
208: (ドコグロ MM0a-1Yxh) 2018/06/19(火)08:14 ID:qYFKlpQqM(1) AAS
そもそものそもそもasyncやawaitで気軽にスレッドを立ててるような処理はだいたいバグってる
スレッドを立てるってそれ自体の処理より
立てても大丈夫なぐらいの前準備のが遥かに手間がかかる
気軽に立ててあるとこはまず間違いなくバグってるので安心していい
209: (アウアウウー Saa5-l11B) 2018/06/19(火)08:47 ID:XF2Gjt0sa(1) AAS
asyncとスレッドって直接関係ないだろ
スレッドは非同期処理を実装する手段の一つに過ぎない
最近のazureなんか「上司にメール送って添付URLのページにある承認ボタンが押されるまで待つ」みたいな非同期処理ですらawaitできるんだぞw
210: (アウアウエー Sa4a-jhA2) 2018/06/19(火)10:49 ID:2YKCyXH1a(1) AAS
誰に向かって説教してるつもりなのかねw
馬鹿過ぎる
211
(1): (JP 0H49-B+cT) 2018/06/19(火)17:36 ID:ygjnsczhH(1) AAS
google検索で
@it async await
これ読んでわかった気になった。
シンプルな実装では使えたけど、応用でつまずく。最近プログラム組んでないので頭固い……
1-
あと 791 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s