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
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 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています