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


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

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



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

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

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

■コードを貼る場合は↓を使いましょう。
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
referencesource.microsoft.com/
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

809 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:49:12.82 ID:+cAt7TAV.net]
>>789
"IDE0018"でググったら一発で解説が見つかるんだけどw
何でその長文タイプうする前に検索しないのよw
そこが分からん

810 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:57:29.01 ID:roepBgfb.net]
>>789
これ、どうしろって言ってん?

811 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:57:31.26 ID:LI6oPksr.net]
>>792

そういうことを言ってるんじゃないと思うけど…

手元にあるc#7.1じゃ再現しないんだけど

812 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 18:59:03.69 ID:LI6oPksr.net]
普通に考えるとスコープから外れるからインライン化できないはずなのにインライン化を進めてくるってことでそ

813 名前:789 mailto:sage [2018/03/30(金) 19:11:19.76 ID:QYlpMr10.net]
早速たくさんのレスありがとうございます。
お返事に少し時間がかかってしまいそうなので、上から順に書き込みたいと思います。
お待たせしてしまって申し訳ありません。

>>791
レスどうもありがとうございます。
色々なクラスで定義されているTryParseやIDictionaryのTryGetValueは
使いやすいと感じていて、それを参考に定義したメソッドをifの内側で使おうとしたのが
>789のようなプログラムを書いた経緯です。
しかし確かに複数の情報を返却したければそれ用のクラスを定義すれば良いことですし、
C#7ではタプルも構文化されているので、もはやoutは時代遅れということでしょうか。
C#にはいくつか負の遺産もあるということなので、その辺りについても勉強したいと思います。

814 名前:789 mailto:sage [2018/03/30(金) 19:21:12.54 ID:QYlpMr10.net]
>>792
説明が不十分で申し訳ありません。
>>795の方が分かりやすく説明してくださっているので蛇足になってしまうかも知れませんが、
私が検索した範囲では、
string message;
getMessage1(out message);

getMessage1(out string message);
に直せば良いということは分かったものの、変数の定義と関数の呼び出しとの間に
(今回の例のifのような)別のコードがあって、それが移動できないように見えても
メッセージが表示されてしまう場合があるということです。

ただ、「移動できないように見える」という部分に自信がなかったのと、
仮にそれが正しかったとしてもこのようなメッセージをどの様に受け止めれば良いのかが
よく分からなかったので質問させていただきました。

815 名前:789 mailto:sage [2018/03/30(金) 19:31:31.59 ID:QYlpMr10.net]
>>793
IDEがなんと言ってきているのか、とういことでしょうか。
サンプルコードを空行も含めて上から数えて7行目のコメント文なのですが、
「IDE0018 変数の宣言をインライン化できます」というメッセージが表示されます。

それとも、私がどのようなお返事を期待しているかとういことであれば、
このメッセージに対処するためのプログラムの修正方法や、
このようなメッセージに対する考え方などを教えていただけないかと考えています。
しかし、私の期待していること自体が見当はずれということもあると思うので、
それ以外でも何か気がつくことがあれば教えていただけると嬉しいです。

816 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:34:47.70 ID:roepBgfb.net]
msに
これ壊れててん?
ってメール出してみよう

817 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 19:44:57.86 ID:DYwliZHB.net]
VSとターゲットのフレームワークのバージョンを書いてないのがいまいち



818 名前:789 mailto:sage [2018/03/30(金) 20:00:44.22 ID:QYlpMr10.net]
>>794
早速検証までしていただいてどうもありがとうございます。
また、本来書くべきC#のバージョンが抜けてしまっていて申し訳ありません。

>>789
を始めに確認したときのターゲットフレームワークは4.6.2だったので、
以下の対応表によればC#のバージョンは6.0ということになるのでしょうか。
https://qiita.com/nskydiving/items/3af8bab5a0a63ccb9893

しかし、その後ターゲットフレームワークを4.7.1や3.5に変更して試してみても
やはり同じメッセージが表示されました。

あと、これも後出しになってしまって申し訳ないのですが、
あからさまな構文エラーと違ってこのメッセージはコンパイルするまで表示されないようです。

IDEはVisual Studio 2017を使用していて、OSはWindows 10 Pro 64 bitです。
他に何かお伝えすべきことがあれば教えていただけると嬉しく思います。

よろしくおねがいします。

819 名前:789 mailto:sage [2018/03/30(金) 20:06:29.84 ID:QYlpMr10.net]
>>795
分かりやすく補足していただいてどうもありがとうございます。
C#のバージョンについてもそうですが、正確にお伝えするための情報の確認が不十分でした。
これはプログラミング以前の問題だと思うので気をつけていきたいと思います。申し訳ありません。

820 名前:789 mailto:sage [2018/03/30(金) 20:18:53.64 ID:QYlpMr10.net]
>>799
アドバイスどうもありがとうございます。一日程度このスレッドを拝見してみて、
私の勘違いという証拠が見つからなければマイクロソフトに報告してみようと思います。

報告する場合、Visual Studio の
「ヘルプ(H)>フィードバックの送信(F)>問題点の報告(P)」を利用しようと考えていますが、
もし他におすすめの連絡先などがあれば教えていただけると嬉しく思います。

821 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:21:01.69 ID:keCNvJ3G.net]
つまりこう書けるよってことじゃないの?

if(x == 1) getMessage1(out string message);
else getMessage2(out string message);

822 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:23:34.69 ID:sxHgkaP9.net]
>>803
https://www.google.co.jp/search?client=opera&q=IDE0018&sourceid=opera&ie=UTF-8&oe=UTF-8
https://vimalakitty.blogspot.jp/2017/09/10-01.html

823 名前:789 mailto:sage [2018/03/30(金) 20:32:11.02 ID:QYlpMr10.net]
>>800
おっしゃる通りで、大変失礼いたしました。申し訳ありません。
>>801と内容が一部重複してしまいますが、これまでの内容を改めて整理したいと思います。
(これまでいただいたレスの表現を一部お借りしています)

問題の概要:
関数のout引数に関して、スコープから外れるためインライン化できないと思われる場面で
インライン化を推奨するメッセージが表示されることがある

問題を再現するコード及びメッセージの内容:
>>789

問題が再現する環境:
Windows 10 Pro 64bit
Visual Studio 2017
ターゲットフレームワーク:3.5/4.6.2/4.7.1 で確認

備考:
コードのコンパイル後にメッセージを確認

以上です。他に何か書くべきことがあれば教えていただけると嬉しいです。
どうぞよろしくお願いいたします。

824 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:37:12.26 ID:+cAt7TAV.net]
>>803
何でそうなるw
だから、まずググろうよ"IDE0018"で

そうすればこれはC#7の追加機能に起因する警告であり、不具合ではないとすぐに分かる。
何でそんな長文タイプする手間は惜しまないのにちょっと検索する手間は惜しむのよw
意味が分からん

ちなみに、この警告を無視するにはこうするんだってさ
https://developercommunity.visualstudio.com/content/problem/159716/is-there-a-way-to-disable-ide0018-globally.html
これもググってれあばすぐに自分で見つけられてるはず

825 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:40:09.19 ID:keCNvJ3G.net]
一行ならブロックスコープ外せるから>>804だと思うんだけど自分の6.0環境では試せなくて悲しい

826 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 20:59:52.66 ID:keCNvJ3G.net]
ごめん、無理だね
ブロック外してもスコープはローカルになっちゃうみたい

827 名前:789 mailto:sage [2018/03/30(金) 21:13:54.63 ID:QYlpMr10.net]
>>804>>808>>809
修正方法のご提示とご検証どうもありがとうございます。問題は>>809にお書きいただいたとおりです。

ただ、お書きいただいた通り問題はスコープにありますので、
Console.WriteLine(message);をifとelseの両方の中に書けばこの問題は起こりません。
この程度の内容を2回書くことは大した問題になりませんし、
この部分に対応するコードが長くなってしまった場合もメソッドとして切り出せば同じことですので、
いただいたレスを読みながら、>>789のようなプログラムを書くこと自体が筋が悪くて、
やはり>>804に適合するプログラムになるよう全体を修正するべきなのかなとも考えました。
ただ、メソッドとして切り出す方法であらゆる状況に対応できるかどうか自信がないので、
いずれにしても確信は持てていない状況です。



828 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:24:37.09 ID:DYwliZHB.net]
>>807
いつまでトンチンカンなこと言ってんの?

829 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:25:20.49 ID:DYwliZHB.net]
例のおじいちゃんかよ
レスして損した

830 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:28:28.22 ID:+cAt7TAV.net]
>>811
トンチンカンでもおじいちゃんでもないからw
こんなググればすぐに理由も対処法もわかる話でMSにクレーム付けたら
質問者が恥をかくだけ

831 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:10.03 ID:DYwliZHB.net]
NG推奨

832 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:33.31 ID:roepBgfb.net]
>>813
じゃ、どうしろって書いてあんの?
リンクのどこ見ればいいかわかんないよ
対象のコード貼ってくれ

833 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:30:33.58 ID:+cAt7TAV.net]
>>814
もうした

834 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:31:54.48 ID:DYwliZHB.net]
おじいちゃんに触れても無駄だよ
いつまでも間違いに気づいてないしレスも読んでないから

835 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:32:50.48 ID:+cAt7TAV.net]
>>815
無視するか気になるなら>>867で対処する
当たり前でしょう

836 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:33:56.46 ID:roepBgfb.net]
>>818
じゃ、バグってんじゃんw

837 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:34:34.33 ID:+cAt7TAV.net]
>>819
だから何でそうなるw
意味が分からない



838 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:35:21.33 ID:DYwliZHB.net]
>>819
おじいちゃんはまだ何が起こってると言う話なのか判ってないからレスしても無駄
スコープもわからないから

839 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:36:16.37 ID:+cAt7TAV.net]
>>821
トンチンカンなことを言ってるのは君の方なんだけど、自覚がないってのは幸福でいいねw

840 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:37:18.61 ID:roepBgfb.net]
>>820
いや、バグでしょコレ
だってこんなん指摘してきた同僚がいたらキチガイじゃん

841 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:37:22.84 ID:MnRWcQoL.net]
>>810
Visual Studio のバグでしょ
とりあえず頓珍漢野郎の>>807のリンク先に抑止方法書いてあるからそれでしのげばいいかと

842 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:38:22.07 ID:+cAt7TAV.net]
っていうか、>>789みたいなコードが警告されるのはむしろ当たり前。
outの変数を使いまわしするなんてよい作法とは言えないからだ

843 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:39:20.19 ID:DYwliZHB.net]
ジジイはトンチンカンすぎてダメだな
いつまでたっても成長しない

844 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:40:20.48 ID:MnRWcQoL.net]
使い回しとかほんとに意味わかってないんだな w

845 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:00.76 ID:roepBgfb.net]
>>825
使うからoutしてんじゃん
ガイジが過ぎるぞ自重しろ

846 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:07.53 ID:+cAt7TAV.net]
しかし、バグバグいってる連中はちゃんとググって解説記事読んでるのかねw
こんなのが同僚だったら張り倒すよw

847 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:41:48.65 ID:DYwliZHB.net]
ジジイは失礼なので取り消しておじいちゃんにまた戻す



848 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:42:50.83 ID:roepBgfb.net]
>>829
ありえねーレベルのアホだなw
outしたの使わないでどーすんだよ

849 名前:789 mailto:sage [2018/03/30(金) 21:45:40.64 ID:QYlpMr10.net]
>>805
参考ページのご紹介どうもありがとうございます。
このページは拝見したのですが、問題の解決に至る道筋を見つけることができませんでした。
(確認したページのうち主要なものはあらかじめお伝えしておくべきだったかもしれません。
 申し訳ありません。)

質問させていただいている身でこのようなことをお願いするのは大変心苦しいのですが、
もしお時間に余裕がありましたら具体的な修正方法のご説明をお願いすることはできませんでしょうか。
ご説明の中で私の疑問を理解していただければ幸いですし、
いただいたご説明で問題が解決できれば願ってもないことです。

煽るような文章で答えを引き出すような形になってしまい大変申し訳ありませんが、
私の説明能力の無さゆえの苦肉の策ということで、どうぞ失礼をお許しください。

850 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:46:08.85 ID:rq+fXpbo.net]
ガイジでいいだろ
本人もそう言ってる

851 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 21:49:29.47 ID:DYwliZHB.net]
>>832
とりあえず別のことに時間使ったほうがいいよ
ひまーな時に思い出して修正されたか確かめるといい

うちじゃ全然再現されないからどうしようもない

852 名前:789 mailto:sage [2018/03/30(金) 22:03:34.15 ID:QYlpMr10.net]
ID:+cAt7TAV 様
警告の抑制方法についてご案内いただきどうもありがとうございます。
他に解決策が見つからなければマイクロソフトに問題を報告し、
マイクロソフトに修正していただけるまで教えていただいた方法で警告を抑制したいと思います。

ただ、他の方にいただいたレスも拝見し、やはり私としてはこのメッセージが適切であるとは確信できずにいます。
もしお時間に余裕がありましたら、>>832のお願いを ID:+cAt7TAV 様にもさせていただけないでしょうか。
お願いの方法も内容も大変失礼なもので申し訳ないのですが、どうぞお許しください。

853 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:06:55.10 ID:+cAt7TAV.net]
まあ質問者がここのお馬鹿さんを代表してMSに質問してみたらいいと思う。
恥をかくのも勉強のうちかも

個人的にはちょっと調べてちょっと自分の頭で考えれば分かるはずのことを理解しようとせず、
「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど

つーか、ちょっと考えれば、この警告は余計なお世話のように思えて
一定の合理性があることぐらいすぐ分かると思うんだけど、ガチで分からない奴もいるんだね世の中には

854 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:10:00.19 ID:+cAt7TAV.net]
>>835
だから、警告の意図はout変数を値を戻す以上の目的で使うのはよい作法じゃないよ、
ってことでしょう。

外側のブロックでも値を使いたいなら別の変数にコピーしてねと

855 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:14:49.66 ID:roepBgfb.net]
は?こんなのバグだろ

856 名前:789 mailto:sage [2018/03/30(金) 22:22:13.29 ID:QYlpMr10.net]
たくさんご反応をいただきどうもありがとうございます。
とても勉強させていただいています。
お返事が遅くなってしまい申し訳ありません。

予想以上のレスの多さでこの話題に触れてくださった方すべてにお返事するのが難しくなってきましたので、
大変勝手ながら、これ以降、直接私の書き込みにアンカーを付けてくださった方と
特に教えていただきたいことがある方へのメッセージのみ書き込みたいと思います。どうぞよろしくお願いします。

>>825
皆さんのお話を聞いて、コードの無作法が警告メッセージの直接または間接的な原因なのではということを
かなり感じてきました。ただ、作法に関する私の理解が不十分でどうにも宙に浮いたような感覚なのです。
もしよろしければ、>>810考えについてコメントなどをいただくことはできないでしょうか。よろしくお願いいたします。

857 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:29:53.50 ID:MnRWcQoL.net]
>>836
どう書けばいいのかを書いてからほざけば? w



858 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:30:40.89 ID:CA+6T7VZ.net]
トンチンチン

859 名前:789 mailto:sage [2018/03/30(金) 22:32:45.82 ID:QYlpMr10.net]
>>824
レスどうもありがとうございます。
やはりバグと考えるのが妥当なのかなという気持ちが強くなってきました。

これだけたくさんのレスをいただき、バグであろうというご意見もいただいているので
もうマイクロソフトに報告を出してしまってもいいかなという気もしているのですが、
一応>>803に書いたとおり一日置いてから報告しようかと思います。

ただバクだとしても、このバグが今まで大した問題にならなかったということは
再現するためのコードに多かれ少なかれ作法の問題があるのではという気持ちもあり、
色々と勉強させていただきたいと考えています。

860 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 22:37:24.89 ID:MUNCeVRK.net]
>>842
現象再現するソリューション一式をアップローダにあげたら何か進展あるかもよ

861 名前:デフォルトの名無しさん mailto:sage [2018/03/30(金) 23:04:09.64 ID:L1eApEVG.net]
>>789
以下の書き方ってビルド通るっけ?
ビルドエラーの時は原因と関係ない警告でたりするからmessage=nullみたいに何かいれれば解決したりしない?

string message;
if (x == 1) getMessage1(out message);
else getMessage2(out message);
Console.WriteLine(message);

後outメソッドではなく、戻り値で文字列を返すのが普通
根本的な解決じゃないけどoutキーワードを使わないgetに直せば警告を消せる

862 名前:789 mailto:sage [2018/03/30(金) 23:06:10.14 ID:QYlpMr10.net]
>>834
アドバイスとご検証どうもありがとうございます。

再現性の問題については、警告のカスタム規則セットなどは使っていないつもりなのですが、
そのあたりの理解が不十分でお伝えすべきことが不足してしまっているのかも知れません。
念のため、解説ページなどを読むなどしてもう一度確認したいと思います。

また、とりあえず別のことに時間をということについて、お心遣いをとても嬉しく思います。
ただ、せっかくこれだけの反応をいただけたのだからできる限りのことを吸収して…という
殊勝(?)な考え以上に、私が感じた問題に多くの方が興味を持ってくださったことが嬉しく、
娯楽という意味でもう少しこの場にお邪魔させていただきたいと思っています。

863 名前:789 mailto:sage [2018/03/30(金) 23:33:26.14 ID:QYlpMr10.net]
>>837
大変勉強になるコメントどうもありがとうございます。この観点はまったく気づいていませんでした。
確かにout変数の使い道をそこまで限定することで警告は表示されなくなりますし、
この制限はプログラムの保守性を高める効果もありそうです。
これで私個人の、警告が表示されて気持ちが悪いという問題は解決したように思います。
どうもありがとうございます。

ただそれはそれとして、今回の警告はやはり意図されたものではないと思うのですが、
もしよければこの点についてもご意見をお聞かせいただけないでしょうか。

私がこのように思うのは、以下のコードで警告が表示されないというところにあります。

864 名前:789 mailto:sage [2018/03/30(金) 23:33:45.21 ID:QYlpMr10.net]
bool tryGetMessage1(int _x, out string _message)
{
if (_x == 1)
{
_message = "x is 1.";
return true;
}
else
{
_message = default(string);
return false;
}
}
void getMessage2(out string _message) => _message = "x is not 1.";

int x = 1;
if (!tryGetMessage1(x, out string message))
{
getMessage2(out message);
}

Console.WriteLine(message);

865 名前:789 mailto:sage [2018/03/30(金) 23:34:33.28 ID:QYlpMr10.net]
>>837の制限に従えば上のプログラムのifの部分は次のように修正されるべきです。
しかしこの例では警告文表示されず、従って警告文は>>837の制限を課すためのものではないと思われるので、
「今回の警告は意図されたものではない」という結論に至りました。

int x = 1;
string message;
if (tryGetMessage1(x, out string message1))
{
message = message1;
}
else
{
getMessage2(out string message2);
message = message2;
}

866 名前:789 mailto:sage [2018/03/30(金) 23:56:19.78 ID:QYlpMr10.net]
>>843
アドバイスどうもありがとうございます。
今更ですが、警告が表示されるコードを含むソリューションをアップロードしてみました。
https://dotup.org/uploda/dotup.org1498398.7z.html

867 名前:789 mailto:sage [2018/03/31(土) 00:03:56.30 ID:a/TgDl8y.net]
>>844
レスどうもありがとうございます。
お書きいただいたコードでは、ビルドは通りますが>>789と同じ警告文が表示されました。
これは message = null と書き換えても同じようです。

戻り値で文字を返すべきだというのはおっしゃるとおりだと思います。
ただ>>796のような理由もあり、out変数でも警告が表示されずにすまないか思って質問させていただきました。



868 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:04:10.00 ID:r1Fcmmf3.net]
>>849
えー、このスレで解決しないといけないの?
初心者スレの領域越えてない?

869 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:04:41.30 ID:r1Fcmmf3.net]
しかも無駄に長文だしちょっと控えてよ

870 名前:789 mailto:sage [2018/03/31(土) 00:25:14.41 ID:a/TgDl8y.net]
>>851 >>852
申し訳ありません。
もともと不具合なのかどうかの判断もできずこのスレで質問させていただきましたが、
IDEの不具合であるとすれば、おっしゃるとおりここで解決を目指すことではないと思います。

ただ、もしこの問題に興味を持ってくださる方がいて、問題が再現されないようであれば、
>>849のソリューションファイルでもお試しいただければ嬉しく思います。

これ以降は、「IDEのバグ修正」という方向の話について私の方から書き込むことは控えたいと思います。
しかし、すでに私が書き込んでしまった内容にお返事をいただいた際のレスについてはお許しください。

以上、長々と失礼いいたしました。

871 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 00:25:16.57 ID:p9TP0 ]
[ここ壊れてます]

872 名前:5UX.net mailto: >>806
Visual Studio 2017のバージョンは?
最新版(15.6.4)で>>849のソリューションビルドしたけど、IDE0018は出なかった。

後、ID:+cAt7TAVは頓珍漢な上に指摘を一切聞かない人だから無視した方が良いよ。
[]
[ここ壊れてます]

873 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 02:11:28.67 ID:r7WFMRHn.net]
>> 853
Visual Studio 15.5.7 だけど IDE0018 は出なかった

リファクタリングしたらどうなるの?
https://codezine.jp/article/detail/9861?p=4

874 名前:789 mailto:sage [2018/03/31(土) 08:06:10.45 ID:Mw1mdL1r.net]
レスどうもありがとうございます。お返事が遅くなってしまい申し訳ありません。
日中はVisual Studioを使えそうになく、申し訳ないのですがきちんとしたお返事は夜になってしまうと思います。
中途半端な内容になってしまいますが、ひとまずいただいたレスにお返事したいと思います。
後ほど改めて書き込みますので、失礼をお許しください。

>>854
Visual Studio 2017のバージョンについてご報告できておらず申し訳ありません。
恥ずかしいことに最新版を使うという意識も持てていなかったので、古いバージョンを使っているかも知れません。
(ただ、古いバージョンで検証して下さった>>855様もIDE0018は出なかったとのことなので、
 なにか他のところに問題があるのかなとも思っています。)

>>855
ご検証どうもありがとうございます。
>>854様の結果と合わせて2つのバージョンで再現しなかったとのことなので、
私は何かとても基本的なところで間違いを犯してしまっているのかも知れません。
リファクタリング機能については、ご指摘をいただいた上で試したわけではないので後でまた確認しようと思いますが、
問題の箇所では動作しなかったように記憶しています。

875 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:08:51.24 ID:r1Fcmmf3.net]
>>855
不具合報告スレでも立ててそっちでやれよ

876 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:43:46.87 ID:+WsDcfNX.net]
別にいいよ
片っ端から透明あぼーんするだけだし

877 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 08:51:48.82 ID:OaeapR1O.net]
>>836
> 「このバグどうなってんだコラー」なんて突撃するのは愚の骨頂にしか思えんけど
1年も前にバグと判明して解決してる
https://developercommunity.visualstudio.com/content/problem/8924/ide0018-false-suggestion.html

> 恥をかくのも勉強のうちかも
実践乙 w



878 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:03:24.19 ID:9aphfiP0.net]
>>789
正解だけ教える

bool TryGetMessage1(out string x) { x = "1"; return true; }
bool TryGetMessage2(out string x) { x = "2"; return true; }

string GetMessage(int x) {
if (x == 1 && TryGetMessage1(out var s)) return s;
if (TryGetMessage2(out var s)) return s;
return null;
}

WriteLine(GetMessage(x));

879 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 09:07:37.87 ID:r1Fcmmf3.net]
>>860
これが恥の上塗りか

880 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:42:07.43 ID:x9Yyswdb.net]
(結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)

881 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:44:49.99 ID:LMRl+wCl.net]
>>860
これは主旨が違うじゃん

882 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 12:45:43.39 ID:O8yBke8L.net]
ワッチョイないからNGがタルい

883 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:03:27.79 ID:9aphfiP0.net]
>>863
もともと修正方法教えろって言ってるんだからこれが正解だよ

884 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:09:24.39 ID:LMRl+wCl.net]
ワッチョイ必要だな

885 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:32:48.06 ID:OaeapR1O.net]
>>862
> (結局調べれば分かることで、ググれというレスを罵倒してた奴らは今どんな心境なんだろう)
罵倒されてもしょうがないよね
って感じですけど?
しかも恥の上塗りしてる奴までいるし w

886 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 13:32:50.70 ID:IoBwmw2C.net]
>>865
>>789と出力結果が違うのに正解とか何ほざいてんのw

887 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:17:13.71 ID:G6tH+bWp.net]
FirstOrDefaultについて教えて下さい。
List<T>をFirstOrDefaultで条件のものを返してきた場合、
それは参照先のアドレスが返ってくるのでしょうか?
それとも写像としてコピーされたものが返ってくるのでしょうか
取り出したものの値を更新したときに、元のListは更新されますか?



888 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:28:08.82 ID:IoBwmw2C.net]
数分で試せることをなぜやらない

889 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:34:02.83 ID:r1Fcmmf3.net]
List<int>とかとList<MyClass>とかで違うよね的な?

890 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:39:45.66 ID:UG1yVXDX.net]
やってることは同じ(値をコピーしてくる)だけど結果が違ってくると言うこと

891 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 15:48:48.09 ID:feZwED6X.net]
教習所の教官「生徒が減ったので褒めちぎったら運転技術は向上!合格率も事故率も改善!俺はなんで今まで怒ってたんやろう?」 [274141358]
https://leia.5ch.net/test/read.cgi/poverty/1522384054/
5 名前:番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイWW d3e8-gBuS)[] 投稿日:2018/03/30(金) 13:30:33.99 ID:F53Z/ySd0
よく考えたら本当にジャップ案件だよな
初心者に対して怒鳴り散らしてどこが悪いかは一切教えない
部活と一緒だわ

892 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:04:38.32 ID:fwgHW5nR.net]
>>869
List<T>とかHashSet<T>とか初めから使えるやつはTが値型か参照型かだけ考えればいいよ
あと「Listが更新されるか」という言い方はTが参照型だと意味が曖昧になるから改めたほうがいいかと

ふと↓こんなのが頭をよぎったけど意味が分からなければスルーしておくれ
class MyList<T> : IList<T> where T : ICloneable { ... }

893 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:14:25.21 ID:UG1yVXDX.net]
IListは実装したことないな
実装例は見かけるけどOSSで実装してるのは見かけない

894 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:27:15.53 ID:fwgHW5nR.net]
>>875
>>874でIEnumerableでもICollectionでもなくIListを選んだのには深い理由があるのよ
文字数という理由がね
まあIsReadOnlyプロパティとかどうかとは思うよ

895 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:49:04.27 ID:G6tH+bWp.net]
ご指導ありがとうございます
Tが値型か参照型かというところが意識から抜けておりました
適当に組んで試してみて、その違いも確認できました

896 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 16:55:49.06 ID:tzO3VEeA.net]
モニタの解像度によらず実寸A4サイズのウィンドウを開いて2pの×を座標ランダムに20表示
それをクリックするというアプリを開発しようと思ってます。
最初モニタの解像度取得してモニタの実寸をユーザーが入力して、
そこからA4サイズは何ドットになるか計算してというのをフォームで作り始めたんだけど、
これだと×や他のボタンも全て計算して調整しなければいけないのかと気づきました。

WPFで開発するとこういうモニタサイズにかかわらず実寸で表示って簡単に処理できるの?

897 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:16:01.57 ID:l8CCe9Lg.net]
実寸はモニタ変更するたび変えないと駄目じゃん
フルHDのスマホとモニタじゃちげーし



898 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:27:51.62 ID:47Bv8u8/.net]
ユーザーが勝手にWindowsのDPI設定を変更してない限りはできるけど、
今更オワコンWPFに手を出すくらいならHTMLで作ることを強くお勧めする
CSSならmm単位で実寸指定できるからWPFよりも簡単だよ

899 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:34:37.92 ID:FNt76Udy.net]
>>868
お前は返しまでくだらないな

900 名前:デフォルトの名無しさん [2018/03/31(土) 17:37:43.10 ID:GqrQqkMZ.net]
イベント処理でキー読み込むのと、ただ単にキー読み込むのではどう違うの?
実行すると速度が全然違うんだけど...

901 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:38:31.40 ID:io+mDfEy.net]
例の教育心理系君か
AWS S3にHTML/CSS/JavaScript置いてURL教えるのが一番手っ取り早いだろうな
結果もJavaScriptからS3 APIで保存するようにすれば完全サーバーレスだ
その程度なら料金は月10円もしない

902 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 17:58:49.73 ID:tzO3VEeA.net]
ご無沙汰しておりました。
教育心理系のものです。
ようやっとC#の本読み終えて作り始めましたけど、
実世界での用紙とか×とかの大きさを統一しないと実験結果に影響が出るので実o単位で画面表示が必要なことに気づきました。

a. ディスプレイ解像度はC#で取得できたので、後は実モニタサイズをユーザーに入力してもらえば、小学生の算数レベルでA4用紙のウィドウは作れる

でいいかと思ったんだけど、
そうすると×の大きさや当たり判定の範囲まですべて計算しなければいけず、
なんかあほらしいことをやってるのか??
と疑問に思ってきました。

ブラウザ上に表示するとユーザー側でctrl+スクロールで表示の大きさ変えられちゃうんですよね。
実世界でのo単位での大きさを固定したいってあまりなさそうな要求だし、aでやってくしかないのかなぁ。

903 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:02:33.45 ID:UG1yVXDX.net]
そこまでやるなら被験者とモニターの距離も計測して一定にしないと…

904 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:12:00.40 ID:NJrC8qba.net]
なぁに網膜に直接書き込んでしまえばw

905 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:20:56.75 ID:/DPGnFFi.net]
いいね!

906 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:35:00.07 ID:tzO3VEeA.net]
>>885
その通りですね。
同じような実験で被験者の姿勢によりスコアが変わるらしいので。

907 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:42:00.60 ID:AhiWvdUc.net]
>>878
WpfにはViewBoxと言う拡大縮小自在なモジュール在るから上手くやりゃなんとかなるよ



908 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 18:59:42.15 ID:tzO3VEeA.net]
>>889
ViewBox調べてみます。
少しフォームベースで初めてみたんですけど、
これから勉強するならWpfとフォームどちらで作るのがおすすめですか?

フォームでもゴリゴリやっていけば狙ったものはつくれそうな感じはするんですけど、
wpfのほうがいいというのも聞いたりして悩み中です。

909 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 19:11:47.57 ID:AhiWvdUc.net]
>>890
件の用途だとformsは厳しいと思われるのでwpfを奨めるが、情報少ないから習得は簡単じゃないと思うよ
もし、不特定多数への配布を考えているならwpfの進化形であるUWPを使うのを奨める

910 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 19:59:43.42 ID:kEu+XyQj.net]
>>882
ただ単に読み込むのはどのタイミングでどうやってるの?

911 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:17:53.84 ID:tzO3VEeA.net]
>>891
wpf情報少ないんですか・・・。
UWPも書籍はまだ少ないみたいですね。
ど素人なので学習のための情報は欲しいなぁ。

フォームでも×を線で描いてしまえばなんとかなりそうなんですけど、
拙速コードでも早期論文化を目指してフォームでやるか
将来のためにUWPを勉強するか悩みますね。

912 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 20:26:11.30 ID:Tt7WJg3O.net]
>>893
WPFでもFormでもスケーリングはページ変換使うだけだから難しくないと思う。

■ Formを使う場合の問題点

- 自動でスケーリングされるのはグラフィックだけ。コントロールやそのフォントは
コードでスケーリングや座標変換する必要がある


■ WPFを使う場合の問題点

- GDI+ほど簡単じゃない

- 多数の図形を描画する場合はパフォーマンスが問題になる

913 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:01:55.63 ID:l8CCe9Lg.net]
何処の座標を実寸通りにしたいか?
だけでformでいいだろ
なんでボタンまでやる必要があるんだ?

914 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:04:08 ]
[ここ壊れてます]

915 名前:.01 ID:tzO3VEeA.net mailto: A4相当の大きさのウィンドウ表示って調べてみると難しいんですね。
DPI取得もなんかOSで100%以外の拡大表示にしてると当てにならないみたいだし、
ディスプレイの大きさはユーザーが実測値入力で妥協してももいいのかな・・・。
[]
[ここ壊れてます]

916 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:09:29.60 ID:g9lQ5N9X.net]
厳密な同環境を求めてるみたいだが、
マウスの移動速度で無理が出ると思う

917 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:25:11.42 ID:l8CCe9Lg.net]
>>896
だからできねぇって
スマホもフルhdだろ?
モニタもフルhdだろ?



918 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:26:20.15 ID:Tt7WJg3O.net]
>>896
一応モニター自身が持つEDIDとかいう情報に表示領域の物理サイズが含まれているらしい

WPFはどうだったか知らんけど、FormはOSのDPI設定を無視して指定ピクセルサイズでFormを
表示させられると思った。

だからDPIさえ分かれば目的の物理サイズのウィンドウを表示することは難しくないはず

919 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:40:05.11 ID:IoBwmw2C.net]
>>898
さっきからスマホスマホうるさい
WPFの時点でデスクトップWindows固定だって理解できないの?

920 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:48:21.76 ID:r1Fcmmf3.net]
>>900
えー、だから解像度に対するモニタのサイズが決定しねーと駄目でしょって話何だけど?
スマホを例に挙げたのはあんな小さいなりして解像度はフルhdだから

921 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:55:14.06 ID:IoBwmw2C.net]
ユーザーがモニタサイズを入力って何回も書いてあるじゃん
それじゃ不満なの?

922 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 22:55:29.08 ID:vbALr7Yq.net]
デスクトプPCとタブレットPCにでもしときゃ良いだろうに

923 名前:デフォルトの名無しさん mailto:sage [2018/03/31(土) 23:28:19.33 ID:r1Fcmmf3.net]
>>902
逆にそこまで決定してると疑問が出るのが謎

924 名前:デフォルトの名無しさん [2018/03/31(土) 23:45:29.31 ID:U08lgUq5.net]
やっぱりC#もバカばかりなんだなあ
現代の三大バカ
ペチパー、ジャバパー、シーシャーパー
で決定やねw

925 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 00:58:58.57 ID:AmnK79El.net]
教えてください。

以下のような事をしたいと思います。
再現のために最低限必要なところだけを抜き出しているので、これだけだと意味が不明ですが、
同じような処理があちこちにあるので処理をまとめるため、このような事をしています。

public void Execute( string sql )
{
using (var command = new System.Data.SqlClient.SqlCommand(sql.ToString() ))
{
}
}

これをビルドしても警告等は出ませんが、コード分析の実行を行うと SqlCommand のところで
CA2100 の警告が出ます。意味は以下のページの通りです。

https://msdn.microsoft.com/ja-jp/library/ms182310.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3

要するに関数パラメータで受け取った文字列にはなにが含まれているのか分からないので危ないよ、と言われているのだと思いますが
出来れば上の関数を利用する形式で進めたいと思います。
この形式のまま CA2100 を回避する手段のアドバイスをいただけると助かります。

926 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:09:42.05 ID:v0T9GXCI.net]
>>906
生のテキストを送るなバカ
PrepareなりSqlParameterなり使ってSQL文とデータを分離しろバカ
詳しくは「C# インジェクション対策」でググれバカ

927 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:10:28.60 ID:RE1ojOXr.net]
MDT_RAW_DPIで物理的なppiに近い値が返ってくるからそれ使えで済む話、で終われば良いんだが
あれちゃんとした値が返ってくる保証が無さそうなのがねー



928 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:21:16.42 ID:GUPc3ba+.net]
C#は、C++を難しく感じる人が使う言語だから。

929 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:26:38.59 ID:Cu8+FDkh.net]
文法だけならC言語が一番好き
クラス以降いらねー

930 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:39:12.76 ID:AmnK79El.net]
>>907
それはやってる。
再現する最低限までコードを削った結果としてその部分が見えなくなってるだけ。

931 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:43:15.77 ID:UKmXoisc.net]
>>906
なんでToStringしてんの?

932 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 01:45:10.58 ID:AmnK79El.net]
>>912
あ。ごめん。
いろいろ試してたときのコードが残ってました。
.ToString() がなくても再現します。実際にもそんな事してません。

933 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 02:06:42.96 ID:1BdiydkK.net]
急にタメ語になるのほんと草

934 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 02:10:36.19 ID:Cu8+FDkh.net]
>>911
えー?
でも出てる警告ってSQLインジェクションの警告ちゃうのん?

935 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 04:52:35.48 ID:fKZaPfKf.net]
>>911
ほんとにやってる?
このコードだけ出されても警告でるに決まってるし、リンク先のような対策しろとしか言えない

936 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 05:05:19.22 ID:fKZaPfKf.net]
>>906
一応コード分析で警告表示させないようにするだけでいいなら、SuppressMessage属性を付ければでなくなる
チームでやってるならメンバー全員の許可は必須

937 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 09:03:31.17 ID:gIH0xNQX.net]
>>906
ちゃんとリンク先読んでる?

メソッドに渡された文字列引数から構築された文字列を使用して IDbCommand.CommandText プロパティが設定されています。

って書いてあるんだからSqlCommamd.CommandTextに外部からもらった文字列を設定した時点でその警告になるよ
パラメーター云々はその後の話
その形式のまま使いたいなら>>917が書いてる通り抑止するしかない
ちゃんとやるならやりたいこと毎に関数作ってSqlCommamd.CommandTextに固定の文字列を設定するようにしないとダメ



938 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 10:20:28.44 ID:JxTU817j.net]
ストアド使いなさいよ

939 名前:906 mailto:sage [2018/04/01(日) 13:39:58.60 ID:AmnK79El.net]
レスをくださった皆さん、ありがとうございます。

>>917
現状では、 教えていただいた属性をつける方法を相談して、NG ならこのまま警告を残す。って方向かなと思います。
一応、先のリンク先の以下に当てはまるのでセキュリティ的には問題ないと考えます。

>警告を抑制する状況
>コマンド テキストにユーザー入力が含まれない場合は、この規則による警告を抑制しても安全です。

>>918
>ちゃんとやるならやりたいこと毎に関数作って
同じような処理があちこちにあるのを嫌って、906 のように出来ないかなと考えました。
ただ、一般的なやり方ではなかったかも知れません。

>>919
ストアドとは、たとえばこのリンク先の事で正しいですか。
https://code.msdn.microsoft.com/windowsdesktop/DataAccess-howto-32c91bf0

自分が試した限りでは CA2100 が出ました。
いままではストアドでも execute 付けて普通に SQL 文として実行してましたが、こういう方法もあったのだと勉強になりました。
またストアドはローカルDB では問題ないのですが、基幹DB では使わせてもらえないようです。軽く聞いてみた範囲での事ですが。

940 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:26:06.48 ID:+XMM3OWE.net]
20年以上前にcを使っていたことがあるという状態で、c#を独学で学び始めたところです
極めて初歩的な話だとは思いますが、どうしてもわからないので教えてください

下記のコードで、「未割り当てのローカル変数'num'が使用されました」というエラーが出て
コンパイルできません。

try-catch構文の後の Console.WriteLine(...) を、try節の中に中に入れるとコンパイルが
できるのですが、try - catch構文以降は、変数のスコープが失われてしまうということなの
でしょうか。

using System;

class ExceptionTest
{
static void Main()
{
int num;
string s;
try
{
Console.Write("enter a number : ");
s = Console.ReadLine();
num = Int32.Parse(s);

} catch(Exception e)
{
Console.WriteLine(e.Message);
}
Console.WriteLine("Your number : " + num);
}
}

941 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:40:32.32 ID:ut+4lapb.net]
>>921
もしtryブロックの中で例外が発生した場合、

> Console.WriteLine("Your number : " + num);

この行に到達した時点でnumの値はどうなってるでしょうか?

942 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:48:12.04 ID:GWiU0YBt.net]
未定義

943 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:50:28.41 ID:JxTU817j.net]
>>921
null許容型にするか、素直に0で初期化しておく

944 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:50:55.68 ID:JxTU817j.net]
>>920
ストアドはそのとおりです

945 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 18:51:15.76 ID:/o+55+4t.net]
>>921
スコープの問題ではなく、try節のnum代入に到達しない可能性があるから
文脈からすれば仰る様にnum出力をtry節に含める、あるいはint num = 0;等…
C#はそういうの然り、C/C++よりガチガチに厳しい

946 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 19:28:44.37 ID:fxgoPYx5.net]
そのうちc#にもdeferが導入されるみたいだけどそういうのでボコボココンパイルエラーが出るようになるのか

947 名前:デフォルトの名無しさん [2018/04/01(日) 19:39:39.66 ID:xe0krAxA.net]
>>926
C/C++でだって未初期化の値を使うコードを書くべきじゃ無いけどな



948 名前:906 mailto:sage [2018/04/01(日) 21:34:56.28 ID:AmnK79El.net]
>>925
thx

949 名前:デフォルトの名無しさん mailto:sage [2018/04/01(日) 23:12:20.14 ID:ECJY99tL.net]
未初期化の(可能性がある)変数は、参照できない。バグ

950 名前:デフォルトの名無しさん [2018/04/02(月) 12:27:49.40 ID:7SJzoey2.net]
必ず初期化されるやんC#

951 名前:921 mailto:sage [2018/04/02(月) 12:31:36.23 ID:sF1TxYYm.net]
皆様ありがとうございます
変数numが定義されていないというエラーだとばかり思っていたのですが、初期化されていないという意味だったのですね
理解できました

952 名前:921 mailto:sage [2018/04/02(月) 12:37:01.02 ID:sF1TxYYm.net]
>>931
私もそう思っていたのですが、違うのでしょうか
手元に書籍がないので、参考にしている本にはなんと書いてあるか不明ですが、
c#では整数型の変数は自動的に0で初期化される、と書いているサイトも
あるようです

953 名前:921 mailto:sage [2018/04/02(月) 12:39:19.98 ID:sF1TxYYm.net]
>>933
訂正
クラスのフィールド変数は初期化されるけれど、メソッド内のローカル変数は初期化されないのですね
誤解していました

954 名前:デフォルトの名無しさん [2018/04/02(月) 18:07:44.63 ID:6bvpmFc5.net]
C#技術者は他の言語に比べて年収はいいんですか?

955 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 18:13:31.05 ID:XIES5nIM.net]
>>935
ここが技術板なのでプログラマ板で聞いてください

956 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:42:37.26 ID:6Vp1brVM.net]
winformsのTableLayoutPanelで2つの列を作成したとき、プログラムの実行中に左右の幅をマウスで調整することはできますか?

957 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 20:44:29.22 ID:MPXX1X60.net]
>>937
どのコントロールでもMouseDown/Move/UpイベントとSize指定ができればいくらでもできる



958 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 22:39:46.16 ID:zzbs2RRz.net]
解釈の原因は解釈者が持つ自分ルール。解釈の自由は責任を伴う
言葉風紀世相の乱れはそう感じる人の心の乱れの自己投影。人は鏡
憤怒は一時の狂気、無知無能の自己証明。中途半端な知識主ほど激昂
「真実は一つ」は錯誤。執着する者ほど矛盾を体験(争い煩悩)
他人に不自由(制約)を与えれば己も不自由(不快)を得る
問題解決力の乏しい者ほど自己防衛の為に礼儀作法マナーを要求
情報分析力の低い者ほどデマ宗教フェイク疑似科学に感化洗脳
自己肯定感の欠けた者ほど「己の知見こそ全で真」に自己陶酔
人生経験の少ない者ほど嫌いキモイ怖いウザイ憎い想定外を体験
キリスト教は世界最大のカルト。聖書は史上最も売れているト本
全ては必然。偶然 奇跡 理不尽 不条理は思考停止 視野狭窄の産物
人生存在現象に元々意味価値理由目的義務使命はない
宗教民族領土貧困は争いの原因ではなく口実動機言訳(原因帰属錯覚)
虐め差別犯罪テロ紛争は根絶可能。必要なのは適切十分な高度教育
体罰は指導力問題解決力の乏しい教育素人の独善甘え怠慢責任転嫁
死刑は民度の低い排他的集団リンチ殺人。「死ねば償える」は偽善
核武装論は人間不信と劣等感に苛まれた臆病な外交素人の精神安定剤
投票率低下は社会成熟の徴候。奇人変人の当選は議員数過多の証左

感情自己責任論 〜学校では教えない合理主義哲学〜 m9`・ω・)

959 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:16:17.88 ID:VPR2x1c1.net]
2chビューワのスレ欄のように、listViewでマウスオーバーするとその行の文字にアンダーラインが入るようにしたいです。
やってみると、以下のサイトにそれに近い方法がけいさいされていたのですが、サイトに指摘があるように画面がちらつきます。

ListViewのアイテムがポイントで選択、シングルクリックでアクティブにできるようにする - .NET Tips (VB.NET,C#...)

https://dobon.net/vb/dotnet/control/lvpointselection.html
そのため、ちらつきを抑制する方法を探したところ、いろいろ出てきましたが、どこにどのコードを記述すればいいのかさっぱりわかりませんでした。
下記サイトが一番丁寧な気がしましたが、これを参考にしてもフォーム上にlistviewが出てきません。

ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記



どうすれば、ちらつきを抑えたlistviewを作成することができるのでしょうか?教えてください。

960 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:17:15.94 ID:VPR2x1c1.net]
すいません、
>ListViewを更新したときのちらつきを抑制する(C#メモ): amongの雑記
についてはNGワードとなってしまいました
下記のURLのスペースを抜いたものです。
amonution.sb lo.jp/article/45398035.html

961 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:31:51.83 ID:MPXX1X60.net]
>>940
これもどのコントロールでも同じなんだがコントロールにダブルバッファのプロパティを付け加えた新しいコントロールを作ってそれを使う
おなじdobonのサイトに「リフレクションを使って、DoubleBufferedプロパティにアクセスする」もある
https://dobon.net/vb/dotnet/control/doublebuffered.html

962 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:50:34.23 ID:VPR2x1c1.net]
>>942


963 名前:信ありがとうございます。
初心者なもので
>ダブルバッファのプロパティを付け加えた新しいコントロールを作ってそれを使う
これの方法がよくわからないのです。

そのページも見たのですが、
>public class DoubleBufferingListView : ListView
以下の部分を全体のコードのどこに記述ればいいのか、記述したあとそれをどうやって使うのか、というのがそもそもわからないのです。
[]
[ここ壊れてます]

964 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:53:34.69 ID:6Vp1brVM.net]
>>938
すみません、もう少し詳しくおしえていただけないでしょうか?

もとの文では分かりづらかったかもしれませんが、コントロール中の左右の幅(比率)を変更したいです。
(デザイナ上でやるように、つまみを掴んで左右に動かすイメージです)

965 名前:デフォルトの名無しさん mailto:sage [2018/04/02(月) 23:54:11.10 ID:VPR2x1c1.net]
とりあえず、namespaceの直下に貼り付けてみてビルド→うーん、エラーか
public partial class Form1 : Formの下に貼り付けてみる→動いたが、じゃあ次に何をすればいいのかわからん。

こんなレベルです。

966 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:03:03.60 ID:BdcH2dSM.net]
>>943
クラスとして記述してデザイナに表示されなければ新しく作ったコントロールを含めたアセンブリを一度ビルドする
dobonのどこかにもやり方あるんじゃないの
>>944
MouseDown:
マウスが押されたe.Location(をスクリーン座標に変える)を変数に記録する
決められた位置で押された場合にフラグをセットする
MouseMove:
フラグがセットされていれば現在の座標と記録していた座標の差分を計算してSizeを変更する
MouseUp:
フラグを破棄する

967 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:16:48.21 ID:Bkifwxhh.net]
>>946
public partial class Form1 : Formの直下に記述して、F7を押してビルドして、form1.cs[デザイン]タブを開いてみましたが、
特に何か増えたような様子はありませんでした。
ご指摘事項を正しく実行できてますでしょうか?



968 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 00:25:08.53 ID:h9dQUiAD.net]
>>946
>>937です。
分かりやすく説明ありがとうございました。明日すぐ実装してみます。

969 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 10:13:42.24 ID:Bkifwxhh.net]
すいません、これで解決しました。

System.Windows.Forms.Control のダブルバッファリングをさくっと有効にする - kawanon
d.hatena.ne.jp/m_kawanon/20100708/1278587297

970 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:10:02.31 ID:tN12x087.net]
リッチテキストボックスのスクロールバーだけ、ドラッグしてもバーがついてこないのですが、
私だけでしょうか?

971 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 21:29:32.68 ID:vN2mpw+F.net]
業務用アプリをオサレな画面にしたいんだけどWPF使ってそこらのテーマ拾ってくるのが手っ取り早いかね

972 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:35:42.00 ID:VCT3rU1H.net]
>>951
WPFのテーマなんてクッソ古臭いデザインの10年近く前からメンテされてないのしかないぞ
WebかUWPで今風のフラットデザインにしましょう

973 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:39:30.70 ID:LPfCppd2.net]
デザインパターンって大事ですか?

974 名前:デフォルトの名無しさん mailto:sage [2018/04/03(火) 23:42:17.43 ID:TkuXyycY.net]
普通は大事じゃない
メジャーな一部の奴だけなぞっておけばいい

975 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:15:51.60 ID:Lt0+eORa.net]
>>951
Material Design In XAML Toolkitが今風で良い感じだよ。
タブが必要なら同じ作者のDragablz Tab Controlも併せてどうぞ。

976 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 00:29:06.64 ID:scqJAZTy.net]
>>953
全身シングルトンで武装して備えろ

977 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 01:35:51.04 ID:gGAYD4mI.net]
ざっと知っておくに越した事は無い
使うかどうかは別としてね

むしろ、「これはやるな」っていうアンチパターンを覚えた方が良いかもだ



978 名前:デフォルトの名無しさん [2018/04/04(水) 02:58:58.46 ID:3/OGlZbi.net]
バグってハニー

979 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 07:59:24.78 ID:ClxMGJax.net]
material designとかタッチメインならいいけど、マウスメインのデスクトップアプリならmaterial designはスペースが無駄すぎる

980 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:33:02.49 ID:n4eM316R.net]
excelファイルを操作する必要があり、いろいろ調べたらclosedXMLを使うのが良さそうという
結論に達したのですが、詳しい解説のあるサイトや書籍はないでしょうか。

ファイルの開き方、セルの参照方法などは普通に見つかるのですが、提供されている
メソッドの一覧とか、発生する例外とか、実用上知っておくべきことを知りたいのです
(主にエラートラップをするためです)

公式ドキュメントがどこにあるかすら発見できなかった程度の英語力ですが、ドキュメントの
ありかを教えていただければ、辞書を引きながらでも調べてみます

981 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:50:20.08 ID:K+0BZuJc.net]
Excel操作はCOM Automation以外には手を出すな
地獄を見ることになる

982 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 20:53:47.86 ID:Uk0C/m1f.net]
ClosedXMLはマジ大変

983 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:05:58.11 ID:Ft6CGKk+.net]
村の禁忌に触れたような言い様だなw

984 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:27:26.09 ID:mQqkiub7.net]
泣く子はいねかー

985 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:30:08.25 ID:PCVfDfH6.net]
ExcelのCOMオートメーションはサーバーでの動作保証が無い時点でゴミなんすよ

986 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 21:32:26.97 ID:BmbE00Mi.net]
>>960
https://github.com/closedxml/closedxml/wiki

使ったことないけどExcelDataReaderも速さの面ではいいってどっかの記事で見た

https://github.com/ExcelDataReader/ExcelDataReader

987 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 22:21:19.70 ID:noE6VTyE.net]
エクセルファイルなんてグレープシティのスプレッド買えば一瞬で終わるだろ



988 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 22:50:52.54 ID:OrTn2AQm.net]
WPFってどういう用途なら使うべき?
文献やネット検索が少なくて使えん

989 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:00:46.54 ID:T8BktjHU.net]
EPPlus

990 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:21:00.13 ID:Lsgd0/8M.net]
>>968
いかなる用途でも使うべきではない
MSの推奨はElectronとASP.NET

991 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:34:42.99 ID:Lt0+eORa.net]
やたらElectron推す人いるけど、言うほどMSが勧めてるかなぁ

992 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:42:42.72 ID:9CBA0Lmr.net]
Electronは縦書きエディタすら作れない駄目なやつ
表示はどうにでも出来るが入力が機能的に絶対無理とか俺が費やした半日を返せよ

993 名前:960 mailto:sage [2018/04/04(水) 23:46:48.80 ID:n4eM316R.net]
>>961-966
触れてはいけないものに触れてしまったかのような反応ですが、なんとかドキュメントを
読んで頑張ってみますわ・・・

>>967
趣味で書いてたVBAマクロをスタンドアロンに書き直したい(データだけexcelファイルから
流用したい)という用途なので、万円単位の買い物は無理です、残念

994 名前:デフォルトの名無しさん mailto:sage [2018/04/04(水) 23:48:56.91 ID:v0eOpRGB.net]
>>969
EPPlusは早いし使いやすいよね

995 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 02:05:31.70 ID:G4evJUNh.net]
>>972
縦書きはWPFも非対応だろ

996 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 08:55:29.27 ID:3wDwo2/L.net]
MSがPWAに手を出したから、類似技術のElectronは始まる前にMSでは終わった

997 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 10:13:54.51 ID:c77DGTlb.net]
コンソールとフォームしか作ったことないけどまだまだ



998 名前:「けますか? []
[ここ壊れてます]

999 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 11:09:05.32 ID:796HNo8s.net]
趣味ならどうでもいい
職業ならWebできないと仕事ない

1000 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 12:00:33.19 ID:D2y+fK6k.net]
てっきり今後はWPFが主流になると思って使ってみたけど、
情報がネットに少なすぎてまいったわ

1001 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 14:16:56.73 ID:+3oTwv9E.net]
趣味で作ってるから問題ないわ

1002 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:48:57.38 ID:2ZtD67QF.net]
例外処理について教えてください

簡単な例で、キーボードから数字を入力させて処理するとして、非数字が入力されたら
数字が入力されるまで、正しい入力をするよう促したいとします
(これだけなら例外を使わなくても簡単ですが、あくまで例として)

bool flag = false;
string str;
int i=0;

while(flag != true)
{
try
{
Console.Write("enter a number = ");
str = Console.ReadLine();
i = Int32.Parse(str);
flag = true;
} catch
{
Console.WriteLine("incorrect number.");
}
}
Console.WriteLine("your number is : " + i);

こんな感じで、try-catchの間をループで囲んで、脱出フラグを用意するのが正攻法
なのでしょうか?
なんかもっとスマートな方法がありそうなのですが

1003 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:57:03.35 ID:dUUr3xK4.net]
>>981
いや、例だと
回答してもこれは違う実は書いてないけど
こういう問題があって駄目だの
小出しでどんどん出るから
ピンポイントでこの問題を解決したいってのを書いて

1004 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:58:19.97 ID:M7HPB+1x.net]
do while

int.TryParse

1005 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 21:59:25.26 ID:IVUDpQN0.net]
var i = 0;
while (true) {
    Console.Write("enter a number = ");
    var str = Console.ReadLine();
    try {
        i = Int32.Parse(str);
        break;
    }
    catch (FormatException) {
        Console.WriteLine("incorrect number.");
    }
}
Console.WriteLine("your number is : " + i);

1006 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:04:19.96 ID:IVUDpQN0.net]
iを0で初期化するのもやめたほうが良かったな

1007 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:11:00.58 ID:2ZtD67QF.net]
>>982
すいません、ピンポイントで課題に直面しているのではなくて、勉強中で疑問に思ったので
質問しました
例えばファイルオープンで存在しないファイル名を掴まされたとか、テキストファイルを想定
しているところにバイナリを噛まされたとか、そういうケースのリトライをどうやって実装するのかと
疑問に感じたのです



1008 名前:981 mailto:sage [2018/04/05(木) 22:19:06.91 ID:2ZtD67QF.net]
>>984
このソースは理解できましたが、>>985はどういう意味でしょう?
私は921でもあるのですが、この時指摘いただいたとおり、iを初期化しておかないと
未割り当てとしてコンパイル通りませんが

1009 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:24:09.13 ID:dUUr3xK4.net]
>>986
ファイル読み込みに失敗しました。
Windowsを終了します。

1010 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:36:19.31 ID:7xCMhR6w.net]
気持ちは分からんでもないが、抽象的な質問しても抽象的な答しか返ってこないと思うw

static void Main(string[] args)
{
  var number = 0;
  Func<bool> tryAskNumber = () =>
  {
    Console.Write("enter a number = ");
    return int.TryParse(Console.ReadLine(), out number);
  };

  while (!tryAskNumber())
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}

1011 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 22:36:33.86 ID:796HNo8s.net]
>>986
そんなもん具体的に何をどうリトライしたいのかによる
それが明確になってるならそれをそのまま実装するだけだ
ネットワークエラーのようにそのまま自動的にリトライ可能なエラーならある程度決まったパターンがあるけど、
>>986のように条件を変えない限りリトライしても必ず失敗するケースでは個別に考えるしかない

1012 名前:デフォルトの名無しさん mailto:sage [2018/04/05(木) 23:38:35.52 ID:IVUDpQN0.net]
>>987
この場合は while を抜けたときは必ず i に値が代入されているとコンパイラが判断できるので通る
https://ideone.com/kUpXYh

1013 名前:981 mailto:sage [2018/04/06(金) 06:10:19.26 ID:e2Dy7HRM.net]
>>989
私の学習では、まだ

Func<bool> tryAskNumber = () =>

この書き方が理解できていないのですが、これでやっているのは例外の処理ではなくて
boolでメソッドの戻り値を評価して処理を繰り返しているのですね?

抽象的な質問だと言われればそのとおりなのですが、エラーが発生したときに例外を
返してくるメソッドを使っているときに、正常処理ができるようになるまで同じ処理を繰り返す、
というケースの質問でした
条件を変えるとかは本質的な話ではなくて、「例外が発生しなくなるまで繰り返す」という
処理フローそのものの質問です
>>984で、break文でtryの中からwhileブロックを抜ければよい、と理解できたので十分です
(tryブロックから、その外側のwhileを抜けられると思ってなかったので躓いてました)

数字入力を取り上げたのは、例として単純で、言わんとすることがすぐに伝わるかと思った
だけです

>>991
>>984
の var i=0; を var i; にしただけだとエラーになりましたが、int i; なら通るんですね

1014 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:09:07.04 ID:iz5pUoek.net]
>>981
例外が出たらアプリケーションを止める
ファイルオープンだとしてもそれは変わらず、存在しなくてリトライしたいなら以下のような事前チェックをするべき
if(存在していない)continue;

ってのが理想だけどファイル系のエラーってたくさんあるし、確認しずらいのもあるからtry-catchを使わないのが現実的じゃないことも

メソッドが例外を出すのは使ってはいけない使い方をしているということなので、使っていい状態か確認してから呼び出すよう心がけるべきかな

1015 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:31:23.65 ID:KffLTaJD.net]
foreach(var a in XXX)
{


みたいなことを可能にするためには
XXX はどんなクラスを継承してないといけませんか?
(何が必要か)

たとえば、XXX がDataRowCollection 型だったら
foreach(DataRow a in XXX) とやらないと怒られてしまいます。

DataRow[] だったら、var が使えます。

この違いは一体なんだろう(なにが必要なのかと)、と

1016 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:39:53.65 ID:QmpxvPzQ.net]
ジェネリックインターフェイスを実装してるから

1017 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:44:13.58 ID:19AXhYIg.net]
IEnum〜だっけ



1018 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 11:54:13.71 ID:KffLTaJD.net]
つまり、DataRowCollection は
IEnumerable を継承しているから、foreach の in に使えるけど
IEnumerable<T> は継承してないから foreach(var は許されない

ということですか

1019 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 12:11:24.19 ID:78uF6QEL.net]
>>992
ラムダ式を使わずに書くとこう
static void Main(string[] args)
{
  var number = 0;
  while (!TryAskNumber(out number))
    Console.WriteLine("incorrect number.");
  Console.WriteLine($"your number is : {number}");
}

static bool TryAskNumber(out int number)
{
  Console.Write("enter a number = ");
  return int.TryParse(Console.ReadLine(), out number);
}

プログラミングの基本は一気にすべてを解決しようとしないこと。
問題を小さな問題に分割すること。

「○○が成功するまで繰り返す」なら、○○の部分と成否を判定してリトライ
する部分は分けた方が基本的に分かりやすくなる

抽象的な質問に対して何か言えるのはこの程度だと思うけど....

1020 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 12:42:38.82 ID:bxzO13cU.net]
>>994
継承は関係ない
GetEnumeratorってメソッドがあればok

1021 名前:デフォルトの名無しさん mailto:sage [2018/04/06(金) 15:01:40.67 ID:Mgh91ASd.net]
へー

1022 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 33日 23時間 52分 35秒

1023 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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