এটি কার্যত সি # ফলনের কীওয়ার্ড - এটি কোনও wwwবস্তুর সাথে বিশেষ কিছু করছে না , বরং এর অভ্যন্তরীণ পদ্ধতির জন্য এর অর্থ বিশেষ কিছু Spec বিশেষত এই কীওয়ার্ডটি কেবল এমন পদ্ধতিতে ব্যবহার করা যেতে পারে যা কোনও IEnumerable(বা IEnumerator) প্রদান করে এবং ব্যবহৃত হয় মুভনেক্সট যখন ডাকা হবে তখন এনুমুরেটর দ্বারা কোন অবজেক্টটি "প্রত্যাবর্তন" হবে তা নির্দেশ করতে ।
এটি কাজ করে কারণ সংকলক পুরো পদ্ধতিটিকে একটি পৃথক শ্রেণিতে রূপান্তরিত করে যা একটি রাষ্ট্রীয় মেশিন ব্যবহার করে প্রয়োগ করে IEnumerable(বা IEnumerator) প্রয়োগ করে - নেট ফলাফলটি হ'ল যে কোনও ব্যক্তি রিটার্ন ভ্যালু দিয়ে গণনা না করা অবধি পদ্ধতিটির দেহ নিজেই কার্যকর করা হয় না। এটি যে কোনও প্রকারের সাথে কাজ করবে, এর সাথে বিশেষ কোনও কিছুই নেই WWW, বরং এটির সাথে যুক্ত পদ্ধতি যা বিশেষ।
সি # কম্পাইলারটি কী ধরণের কোড উত্পন্ন করে তা সম্পর্কে আরও অন্তর্দৃষ্টি জন্য সি # ফলন কীওয়ার্ডের দৃশ্যের পিছনে একবার দেখুন বা আইএল স্পাইয়ের মতো কিছু ব্যবহার করে কোডটি নিজেই পরীক্ষা করে দেখুন এবং পরীক্ষা করুন
আপডেট: স্পষ্ট করার জন্য
- যখন ইউনিটি একটি কর্টিনকে কল করে যা একটি
yield returnবিবৃতি ধারণ করে যা ঘটেছিল তা হ'ল একটি গণক ফেরত দেওয়া হয় - পদ্ধতির কোনও অংশই এই মুহুর্তে কার্যকর করা হয় না
MoveNextBodyক্যটি সম্পাদন করার পদ্ধতি বডিটি পেতে ক্রমের প্রথম মানটি পেতে পুনরায় পুনরুক্তকারীকে কল করতে হবে। এটি প্রথম yeild returnবিবৃতি পর্যন্ত পদ্ধতিটি কার্যকর করতে পারে যার ফলে কলার পুনরায় শুরু হয় (এবং সম্ভবত ityক্য বাকী ফ্রেমের রেন্ডার করতে চলেছে)
- যেহেতু আমি এটি ইউনিটি বুঝতে পেরেছি তারপরে
MoveNextপ্রতিটি পরবর্তী ফ্রেমে একবারে পুনরুদ্ধারে পদ্ধতিটি কল করা যায় , যার ফলে পদ্ধতিটি yield returnপ্রতিটি ফ্রেমের একবারে পরবর্তী বিবৃতি পর্যন্ত কার্যকর করা হয়, যতক্ষণ না পদ্ধতির শেষ বা yield breakবিবৃতি না পৌঁছানো হয় (নির্দেশক ক্রম শেষ)
শুধুমাত্র বিশেষ বিট এখানে (এবং মধ্যে দম্পতি এর অন্যান্য ক্ষেত্রে ) যে ঐক্য এই বিশেষ পুনরুক্তিকারীর পরবর্তী ফ্রেম আগাম না হয়, এর পরিবর্তে এটি শুধুমাত্র পুনরুক্তিকারীর যখন ডাউনলোড সম্পন্ন করেছে (নির্বাহ অব্যাহত রাখার জন্য পদ্ধতি যার ফলে) এগিয়ে। যদিও সেখানে বেস ইয়েলডিলস্ট্রেশন ক্লাসের উপস্থিতি উপস্থিত রয়েছে যা সম্ভবত ইউনিটিতে সংকেত দেওয়ার জন্য একটি জেনেরিক ব্যবস্থা রয়েছে যখন একটি পুনরুক্তিকারীকে উন্নত করা উচিত, WWWবর্গটি এই শ্রেণীর কাছ থেকে উত্তরাধিকারী বলে মনে হয় না তাই আমি কেবল ধরে নিতে পারি যে এর জন্য একটি বিশেষ কেস রয়েছে ইউনিটি ইঞ্জিনে এই শ্রেণি।
কেবল স্পষ্ট করে বলতে গেলে - yieldকীওয়ার্ডটি WWWশ্রেণীর জন্য বিশেষ কিছু করে না , বরং এটি theক্য প্রত্যাবর্তিত গণনার সদস্যদের যে বিশেষ হ্যান্ডলিং দেয় যা এই আচরণের কারণ হয়ে দাঁড়ায়।
দ্বিতীয়টি আপডেট করুন: যেকোন প্রক্রিয়া যা WWWওয়েব পৃষ্ঠাগুলি তাত্পর্যপূর্ণভাবে ডাউনলোড করতে ব্যবহার করে এটি সম্ভবত HTTPWebRequest.BegGetResponse পদ্ধতি ব্যবহার করে যা অভ্যন্তরীণভাবে অ্যাসিনক্রোনাস আইও ব্যবহার করবে বা বিকল্পভাবে এটি থ্রেড ব্যবহার করতে পারে (হয় নিবেদিত থ্রেড তৈরি করে অথবা থ্রেড পুল ব্যবহার করে)।
yield returnঅ্যাসিক্রোনাস অপারেশনগুলির জন্য ব্যবহার হ্যাক। একটি "আসল" সি # প্রোগ্রামে আপনি এর জন্য একটি ব্যবহার করতে চানTask। Ityক্য সম্ভবত তাদের ব্যবহার করছে না কারণ এটি তৈরি করা হয়েছিল। নেট 4.0, কখনTaskচালু হয়েছিল।