c# - সি#লুপ-বিরতি বনাম অবিরত




loops enumeration (10)

একটি C # (অন্যান্য ভাষাগুলির উত্তর দিতে বিনা দ্বিধায়) লুপ, লুপের গঠন ছেড়ে যাওয়ার উপায় হিসাবে বিরতির মধ্যে কী পার্থক্য রয়েছে এবং পরবর্তী পুনরাবৃত্তিতে যেতে হবে?

উদাহরণ:

foreach (DataRow row in myTable.Rows)
{
    if (someConditionEvalsToTrue)
    {
        break; //what's the difference between this and continue ?
        //continue;
    }
}

অনুগ্রহ করে আমাকে সুস্পষ্ট বর্ণনা দিন: নোট করুন যে না বিরতি বা অবিরত করা, আপনার প্রোগ্রাম পুনরায় শুরু হবে; অর্থাৎ আমি একটি নির্দিষ্ট ত্রুটির জন্য আটকা পড়েছি, তারপর লগিং করার পরে, আমি প্রক্রিয়াকরণ পুনরায় শুরু করতে চেয়েছিলাম, এবং পরবর্তী সারির মধ্যে আরও কোড কাজ ছিল, তাই আমি এটি দিয়ে পড়ে যাই।


অন্য ভাষার জন্য:

'VB
For i=0 To 10
   If i=5 then Exit For '= break in C#;
   'Do Something for i<5
next

For i=0 To 10
   If i=5 then Continue For '= continue in C#
   'Do Something for i<>5...
Next

উদাহরণস্বরূপ

foreach(var i in Enumerable.Range(1,3))
{
    Console.WriteLine(i);
}

মুদ্রণ 1, 2, 3 (পৃথক লাইন)।

I = 2 এ একটি বিরতি শর্ত যোগ করুন

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        break;

    Console.WriteLine(i);
}

এখন লুপ প্রিন্ট 1 এবং স্টপ।

একটি অবিরত সঙ্গে বিরতি প্রতিস্থাপন করুন।

foreach(var i in Enumerable.Range(1,3))
{
    if (i == 2)
        continue;

    Console.WriteLine(i);
}

এখন লুপ প্রিন্ট 1 এবং 3 (2 skipping)।

সুতরাং, break লুপ বন্ধ করে, এবং পরবর্তী পুনরাবৃত্তি যাও skips continue


একটি foreach লুপ সম্পূর্ণরূপে বিরতি, বিরতি ব্যবহার করা হয়;

লুপে পরবর্তী পুনরাবৃত্তি যেতে, অবিরত ব্যবহার করা হয়;

আপনি যদি বস্তুর সংগ্রহের মাধ্যমে লুপ করছেন তবে ব্রেকটি কার্যকর (যেমন একটি ডেটেবলিতে সারি) এবং আপনি কোনও নির্দিষ্ট মিল অনুসন্ধান করছেন, যখন আপনি সেই মিলটি খুঁজে পান তখন অবশিষ্ট সারিগুলি চালিয়ে যাওয়ার প্রয়োজন নেই, তাই আপনি বিরতি দিতে চান বাইরে।

আপনি একটি লুপ পুনরাবৃত্তি পাশাপাশি প্রয়োজন কি সম্পন্ন যখন আপনি চালিয়ে যেতে দরকারী। আপনি সাধারণত একটি যদি পরে চলতে থাকবে।


দুর্ভাগ্যবশত রুবি একটু ভিন্ন। পিএস: ভুল হলে আমি এই ক্ষমা চাইলে আমার মেমরিটি একটু ক্ষিপ্ত

পরিবর্তে বিরতি / অবিরত, এটি বিরতি / পরবর্তী, যা loops পরিপ্রেক্ষিতে একই আচরণ

Loops (অন্য সব মত) এক্সপ্রেশন হয়, এবং তারা যে শেষ জিনিস "ফিরে"। অধিকাংশ সময়, একটি লুপ থেকে ফেরত মান পাওয়ার অর্থহীন, তাই সবাই এটি করে

a = 5
while a < 10
    a + 1
end

তবে আপনি এটা করতে পারেন

a = 5
b = while a < 10
    a + 1
end # b is now 10

যাইহোক, অনেক রুবি কোড একটি ব্লক ব্যবহার করে একটি লুপ 'emulates'। ক্যানোনিকাল উদাহরণ হয়

10.times do |x|
    puts x
end

ব্লকের ফলে জিনিসগুলি করতে চাইলে এটি অনেক বেশি সাধারণ, এটি এমনই যেখানে এটি নোংরা হয়ে যায়। বিরতি / পরবর্তী ব্লক প্রেক্ষাপটে বিভিন্ন জিনিস মানে।

বিরতি ব্লক বলা কোড থেকে লাফ হবে

পরবর্তী ব্লকের অবশিষ্ট কোডটি বাদ দেবে এবং আপনি ব্লকের কলকারীকে যা উল্লেখ করেছেন তা 'ফিরতি'। এই উদাহরণ ছাড়া কোন ধারনা করে না।

def timesten
    10.times{ |t| puts yield t }
end


timesten do |x|
   x * 2
end
# will print
2
4
6
8 ... and so on


timesten do |x|
    break
    x * 2
end
# won't print anything. The break jumps out of the timesten function entirely, and the call to `puts` inside it gets skipped

timesten do |x|
    break 5
    x * 2
end
# This is the same as above. it's "returning" 5, but nobody is catching it. If you did a = timesten... then a would get assigned to 5

timesten do |x|
    next 5
    x * 2
end 
# this would print
5
5
5 ... and so on, because 'next 5' skips the 'x * 2' and 'returns' 5.

তাই হ্যা. রুবি সন্ত্রস্ত, কিন্তু এটি কিছু ভয়ানক কোণার ক্ষেত্রে আছে। এটি ব্যবহার করে আমার বছরের মধ্যে আমি দেখেছি দ্বিতীয় খারাপ এক :-)


যদি আপনি বিরতিটি ব্যবহার করতে না চান তবে আপনি কেবল আমার এমন মানটি বাড়ান যাতে এটি পুনরাবৃত্তি অবস্থা মিথ্যা এবং পরবর্তী পুনরাবৃত্তিতে লুপ কার্যকর না হয়।

for(int i = 0; i < list.Count; i++){
   if(i == 5)
    i = list.Count;  //it will make "i<list.Count" false and loop will exit
}

সহজ উত্তর:

ব্রেক অবিলম্বে লুপ নির্গত।
অবিরত পরবর্তী আইটেম প্রক্রিয়াকরণ শুরু হয়। (যদি কোন থাকে, জন্য / যখন মূল্যায়ন লাইন জাম্পিং দ্বারা)


break foreach লুপ সম্পূর্ণরূপে বন্ধ হবে, পরবর্তী DataRow এড়িয়ে continue হবে।


break সম্পূর্ণ লুপ প্রস্থান করা হবে, continue বর্তমান পুনরাবৃত্তি এড়িয়ে continue থাকবে।

উদাহরণ স্বরূপ:

for (int i = 0; i < 10; i++) {
    if (i == 0) {
        break;
    }

    DoSomeThingWith(i);
}

বিরতিটি প্রথম পুনরাবৃত্তিতে লুপটি প্রস্থান করার কারণ DoSomeThingWith করবে - DoSomeThingWith কখনও কার্যকর হবে না। এই এখানে:

for (int i = 0; i < 10; i++) {
    if(i == 0) {
        continue;
    }

    DoSomeThingWith(i);
}

DoSomeThingWith চালানো হবে না i = 0 , কিন্তু লুপ অবিরত থাকবে এবং DoSomeThingWith i = 1 থেকে i = 9 জন্য কার্যকর করা হবে।


বিরতি

অবিলম্বে প্রস্থান করার জন্য একটি লুপ শক্তি বিরতি।

চালিয়ে

এই বিরতি বিপরীত না। লুপ বন্ধ করার পরিবর্তে, এটি অবিলম্বে loops, বাকি কোড skipping।





enumeration