「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
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/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part135
http://mevius.5ch.net/test/read.cgi/tech/1517749348/
■コードを貼る場合は↓を使いましょう。
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: default:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part136
レス数が1000を超えています。これ以上書き込みはできません。
2018/03/03(土) 15:09:05.75ID:SBEkwl3H
991デフォルトの名無しさん
2018/04/05(木) 23:38:35.52ID:IVUDpQN0992981
2018/04/06(金) 06:10:19.26ID:e2Dy7HRM >>989
私の学習では、まだ
Func<bool> tryAskNumber = () =>
この書き方が理解できていないのですが、これでやっているのは例外の処理ではなくて
boolでメソッドの戻り値を評価して処理を繰り返しているのですね?
抽象的な質問だと言われればそのとおりなのですが、エラーが発生したときに例外を
返してくるメソッドを使っているときに、正常処理ができるようになるまで同じ処理を繰り返す、
というケースの質問でした
条件を変えるとかは本質的な話ではなくて、「例外が発生しなくなるまで繰り返す」という
処理フローそのものの質問です
>>984で、break文でtryの中からwhileブロックを抜ければよい、と理解できたので十分です
(tryブロックから、その外側のwhileを抜けられると思ってなかったので躓いてました)
数字入力を取り上げたのは、例として単純で、言わんとすることがすぐに伝わるかと思った
だけです
>>991
>>984
の var i=0; を var i; にしただけだとエラーになりましたが、int i; なら通るんですね
私の学習では、まだ
Func<bool> tryAskNumber = () =>
この書き方が理解できていないのですが、これでやっているのは例外の処理ではなくて
boolでメソッドの戻り値を評価して処理を繰り返しているのですね?
抽象的な質問だと言われればそのとおりなのですが、エラーが発生したときに例外を
返してくるメソッドを使っているときに、正常処理ができるようになるまで同じ処理を繰り返す、
というケースの質問でした
条件を変えるとかは本質的な話ではなくて、「例外が発生しなくなるまで繰り返す」という
処理フローそのものの質問です
>>984で、break文でtryの中からwhileブロックを抜ければよい、と理解できたので十分です
(tryブロックから、その外側のwhileを抜けられると思ってなかったので躓いてました)
数字入力を取り上げたのは、例として単純で、言わんとすることがすぐに伝わるかと思った
だけです
>>991
>>984
の var i=0; を var i; にしただけだとエラーになりましたが、int i; なら通るんですね
993デフォルトの名無しさん
2018/04/06(金) 11:09:07.04ID:iz5pUoek >>981
例外が出たらアプリケーションを止める
ファイルオープンだとしてもそれは変わらず、存在しなくてリトライしたいなら以下のような事前チェックをするべき
if(存在していない)continue;
ってのが理想だけどファイル系のエラーってたくさんあるし、確認しずらいのもあるからtry-catchを使わないのが現実的じゃないことも
メソッドが例外を出すのは使ってはいけない使い方をしているということなので、使っていい状態か確認してから呼び出すよう心がけるべきかな
例外が出たらアプリケーションを止める
ファイルオープンだとしてもそれは変わらず、存在しなくてリトライしたいなら以下のような事前チェックをするべき
if(存在していない)continue;
ってのが理想だけどファイル系のエラーってたくさんあるし、確認しずらいのもあるからtry-catchを使わないのが現実的じゃないことも
メソッドが例外を出すのは使ってはいけない使い方をしているということなので、使っていい状態か確認してから呼び出すよう心がけるべきかな
994デフォルトの名無しさん
2018/04/06(金) 11:31:23.65ID:KffLTaJD foreach(var a in XXX)
{
みたいなことを可能にするためには
XXX はどんなクラスを継承してないといけませんか?
(何が必要か)
たとえば、XXX がDataRowCollection 型だったら
foreach(DataRow a in XXX) とやらないと怒られてしまいます。
DataRow[] だったら、var が使えます。
この違いは一体なんだろう(なにが必要なのかと)、と
{
みたいなことを可能にするためには
XXX はどんなクラスを継承してないといけませんか?
(何が必要か)
たとえば、XXX がDataRowCollection 型だったら
foreach(DataRow a in XXX) とやらないと怒られてしまいます。
DataRow[] だったら、var が使えます。
この違いは一体なんだろう(なにが必要なのかと)、と
995デフォルトの名無しさん
2018/04/06(金) 11:39:53.65ID:QmpxvPzQ ジェネリックインターフェイスを実装してるから
996デフォルトの名無しさん
2018/04/06(金) 11:44:13.58ID:19AXhYIg IEnum〜だっけ
997デフォルトの名無しさん
2018/04/06(金) 11:54:13.71ID:KffLTaJD つまり、DataRowCollection は
IEnumerable を継承しているから、foreach の in に使えるけど
IEnumerable<T> は継承してないから foreach(var は許されない
ということですか
IEnumerable を継承しているから、foreach の in に使えるけど
IEnumerable<T> は継承してないから foreach(var は許されない
ということですか
998デフォルトの名無しさん
2018/04/06(金) 12:11:24.19ID:78uF6QEL >>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);
}
プログラミングの基本は一気にすべてを解決しようとしないこと。
問題を小さな問題に分割すること。
「○○が成功するまで繰り返す」なら、○○の部分と成否を判定してリトライ
する部分は分けた方が基本的に分かりやすくなる
抽象的な質問に対して何か言えるのはこの程度だと思うけど....
ラムダ式を使わずに書くとこう
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);
}
プログラミングの基本は一気にすべてを解決しようとしないこと。
問題を小さな問題に分割すること。
「○○が成功するまで繰り返す」なら、○○の部分と成否を判定してリトライ
する部分は分けた方が基本的に分かりやすくなる
抽象的な質問に対して何か言えるのはこの程度だと思うけど....
999デフォルトの名無しさん
2018/04/06(金) 12:42:38.82ID:bxzO13cU1000デフォルトの名無しさん
2018/04/06(金) 15:01:40.67ID:Mgh91ASd へー
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 33日 23時間 52分 35秒
新しいスレッドを立ててください。
life time: 33日 23時間 52分 35秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 高市首相が異例の“買春行為の罰則化の検討”に言及…世界では“買う側”に罰則を科すのが先進国のスタンダード ★2 [樽悶★]
