সি # সংকলক কেন নেস্টেড স্কোপেই ডুপ্লিকেট ভেরিয়েবলের অনুমতি দেয়?


18

Orতিহাসিকভাবে, যখন। বিকাশ করার সময় আমি নেস্টেড স্কোপে ভেরিয়েবলের নামটি নকল করতে পারি না । তবে সম্প্রতি ভিজ্যুয়াল স্টুডিও 2019-এর সংস্করণ 16.4.2 এ আপডেট করার পরে আমি লক্ষ্য করেছি যে পরিবর্তনশীল নামগুলি নেস্টেড স্কোপটিতে নকল করা যায়।

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

var test = "hello";
Console.WriteLine(test);
var things = new []{"one", "two", "three"};
things.Select(test => // <- test is duplicated here, normally this breaks compilation
{
    Console.WriteLine(test);
    return test;
}).ToList();

// output:
// hello
// one
// two
// three

https://dotnetfiddle.net/h85BK4

কেন হঠাৎ এটি অনুমোদিত?

প্রশ্ন অনুসরণ করুন: এটি যদি কোনও নতুন ভাষা "বৈশিষ্ট্য" হয় তবে ভেরিয়েবলের স্কোপগুলিতে নকল হয়ে যাওয়ার পরে ভিজুয়াল স্টুডিওর কি বিরতি অব্যাহত রাখতে কোনও উপায় আছে?


2
আমি মনে করি না এটির অনুমতিযুক্ত সদৃশ ভেরিয়েবল allowing testডেটা টাইপ একই হওয়ায় এটি একই ভেরিয়েবল ব্যবহার করে । উদাহরণ testহিসাবে ভেরিয়েবল ঘোষণার চেষ্টা করুন intvar test = 12345;আমি মনে করি আপনার সংকলন ত্রুটি করা উচিত। (আমি এটি চেষ্টা করি নি)
এলপি 13

1
@ এলপি 13 testপ্রস্তাবিত প্রকারের পরিবর্তনের কোনও প্রভাব নেই। আপনি প্রশ্নের সাথে যুক্ত লিগলে এটি চেষ্টা করতে পারেন।
অ্যামি

1
কিছু নয়, লক্ষ্য কাঠামো অপ্রাসঙ্গিক। নতুন আচরণটি ভাষা সংস্করণের কারণে। কোডটি সি # 8 তে সংকলিত হয়, এটি সি # 7.3 (এবং নীচে আমি ধরে নিই) তে সংকলন করে না
ইমানুয়েল ভিন্টিলি


6
তার জন্য গিটহাব ইস্যু রয়েছে । মাইলস্টোন 16.5 এ সেট করা আছে। @ ওরখানআলিখানভ আপনি এটি দ্রুত খুঁজে পেয়েছেন :)
পাভেল আনিকৌসকি

উত্তর:


1

এটি সি # 8.0 এ একটি নতুন বৈশিষ্ট্য, স্থানীয় ফাংশন এবং ল্যাম্বডা পরামিতিগুলি বাইরের নামের ছায়া ফেলতে পারে।


0

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

এবং এই ক্ষেত্রে, সেই পরীক্ষার ভেরিয়েবলটি তার নিজস্ব ভেরিয়েবল এবং উপরের পরীক্ষার ভেরিয়েবলের সাথে কোনও সংযোগ নেই।

এটি প্রতিরোধ করার জন্য, আপনি বনামকে ত্রুটি ঘটানোর সময় নিক্ষেপ করতে বলতে পারবেন না, আপনি কেবল পরিবর্তনশীল নামটি নিজেই পরিবর্তন করতে পারবেন have

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.