এটি কি বাগ?
হ্যাঁ.
অভিনন্দন, আপনি ওভারলোড রেজোলিউশনে একটি বাগ খুঁজে পেয়েছেন। বাগ সি # 4 এবং 5 এ পুনরুত্পাদন করে; এটি শব্দার্থ বিশ্লেষকের "রোজলিন" সংস্করণে পুনরুত্পাদন করে না। আমি সি # 5 পরীক্ষা দলকে জানিয়েছি, এবং আশা করি আমরা চূড়ান্ত প্রকাশের আগে এই তদন্ত এবং সমাধান করতে পারি। (সর্বদা হিসাবে, কোন প্রতিশ্রুতি।)
একটি সঠিক বিশ্লেষণ অনুসরণ করা হয়। প্রার্থীরা হলেন:
0: C(params string[]) in its normal form
1: C(params string[]) in its expanded form
2: C<string>(string)
3: C(string, object)
প্রার্থী শূন্য স্পষ্টতই প্রয়োগযোগ্য না কারণ string
রূপান্তরযোগ্য নয় string[]
। যে তিনটি ছেড়ে।
তিনটির মধ্যে আমাদের অবশ্যই একটি অনন্য সেরা পদ্ধতি নির্ধারণ করতে হবে। আমরা বাকি তিন প্রার্থীর জোড়ায় তুলনা করে এটি করি। এরকম তিনটি জুড়ি রয়েছে। বাদ দেওয়া alচ্ছিক প্যারামিটারগুলি কেটে ফেলার পরে তাদের সকলের অভিন্ন প্যারামিটারের তালিকা রয়েছে, যার অর্থ হ'ল স্পেসিফিকেশনের .5.৫.৩.২ বিভাগে বর্ণিত উন্নত টাইব্রেকিং রাউন্ডে যেতে হবে।
কোনটি ভাল, 1 বা 2? প্রাসঙ্গিক টাইব্রেকারটি হ'ল জেনেরিক পদ্ধতিটি সর্বদা একটি নন-জেনেরিক পদ্ধতির চেয়ে খারাপ। 2 টি 1 এর চেয়েও খারাপ So সুতরাং 2 জন বিজয়ী হতে পারে না।
কোনটি ভাল, 1 বা 3? সম্পর্কিত টাইব্রেকার হ'ল: কেবল তার প্রসারিত আকারে প্রযোজ্য একটি পদ্ধতিটি তার সাধারণ আকারে প্রযোজ্য পদ্ধতির চেয়ে সর্বদা খারাপ। সুতরাং 1 টি 3 এর চেয়েও খারাপ So সুতরাং 1 বিজয়ী হতে পারে না।
কোনটি ভাল, 2 বা 3? প্রাসঙ্গিক টাইব্রেকারটি হ'ল জেনেরিক পদ্ধতিটি সর্বদা একটি নন-জেনেরিক পদ্ধতির চেয়ে খারাপ। 2 3 এর চেয়ে খারাপ, সুতরাং 2 বিজয়ী হতে পারে না।
একাধিক প্রযোজ্য প্রার্থীদের একটি সেট থেকে বাছাই করতে একজন প্রার্থীকে অবশ্যই (১) অপরাজিত থাকতে হবে, (২) কমপক্ষে অন্য একজন প্রার্থীকে পরাজিত করতে হবে এবং (৩) প্রথম দুটি বৈশিষ্ট্যযুক্ত অনন্য প্রার্থী হতে হবে। তিনজন প্রার্থী অন্য কোনও প্রার্থীকে মারধর করেন এবং কমপক্ষে অন্য একজন প্রার্থীকে মারধর করেন; এই সম্পত্তি সহ এটিই একমাত্র প্রার্থী। সুতরাং প্রার্থী তিনটি অনন্য সেরা প্রার্থী । এটা জিততে হবে।
কেবল সি # 4 সংকলকটি এটি ভুল হয়ে উঠছে না, কারণ আপনি সঠিকভাবে লক্ষ্য করেছেন যে এটি একটি উদ্ভট ত্রুটি বার্তার প্রতিবেদন করছে। যে সংকলকটি ওভারলোড রেজোলিউশন বিশ্লেষণ ভুলটি পেয়েছে তা একটু অবাক করার মতো। এটি যে ত্রুটির বার্তাটি ভুল পেয়েছে তা সম্পূর্ণ উদ্বেগজনক নয়; "দ্ব্যর্থহীন পদ্ধতি" ত্রুটি হিউরিস্টিক মূলত প্রার্থী সেট থেকে কোনও দুটি পদ্ধতি বেছে নেয় যদি কোনও সেরা পদ্ধতি নির্ধারণ করা যায় না। "প্রকৃত" অস্পষ্টতা খুঁজে পাওয়া খুব ভাল নয়, যদি বাস্তবে এটি থাকে।
কেউ যুক্তিসঙ্গতভাবে জিজ্ঞাসা করতে পারে যে এটি কেন। এটা বেশ এটি বড় দায়! দুই পদ্ধতি হল "unambigously দ্ব্যর্থক" কারণ "betterness" সম্পর্ক নেই অকর্মক । এমন পরিস্থিতিতে উপস্থিত হওয়া সম্ভব যেখানে প্রার্থী 1 2 এর চেয়ে 2 জন ভাল, 3 এর চেয়ে 2 জন ভাল এবং 1 টির চেয়ে 3 জন ভাল such
আমি রোজলিনের পক্ষে এই ধর্মীয় তাত্ত্বিক উন্নতি করতে চাই তবে এটি একটি কম অগ্রাধিকার।
(পাঠকের কাছে অনুশীলন করুন: "এমন একটি এন উপাদানগুলির একটি অনন্য সেরা সদস্যকে চিহ্নিত করার জন্য একটি লিনিয়ার-টাইম অ্যালগরিদম তৈরি করুন যেখানে দ্বিপত্য সম্পর্কটি আন্তঃসংযোগমূলক" এই দলের হয়ে আমার সাক্ষাত্কারের দিন জিজ্ঞাসা করা হয়েছিল এমন প্রশ্নগুলির মধ্যে একটি ছিল এটি নয়) একটি খুব শক্ত অ্যালগরিদম; একটি শট দিন।)
এত দিন ধরে # সিতে বিকল্প argu যুক্তি যুক্ত করার পিছনে আমরা যে কারণ পিছিয়ে দিয়েছিলাম তার একটি কারণ ছিল ওভারলোড রেজোলিউশন অ্যালগরিদমের সাথে জটিল জটিল অস্পষ্ট পরিস্থিতিগুলির সংখ্যা; দৃশ্যত আমরা এটি সঠিকভাবে পাইনি।
আপনি যদি এটি কোনও ট্র্যাক করতে কোনও সংযোগ সমস্যা প্রবেশ করতে চান তবে নির্দ্বিধায়। আপনি যদি এটি কেবল আমাদের নজরে আনতে চান তবে এটি সম্পন্ন করুন। আমি পরের বছর পরীক্ষা দিয়ে অনুসরণ করব।
এটা আমার নজরে আনার জন্য ধন্যবাদ। ত্রুটির জন্য দুঃখিত।
'Overloaded.ComplexOverloadResolution(string)'
বোঝায়<string>(string)
; আমি মনে করি এটি(string, object)
কোনও পদার্থ সরবরাহ না করে পদ্ধতিটিকে বোঝায় ।