সি # 3 তে 'বর্ণ' কীওয়ার্ড ব্যবহারের বিষয়ে সহকর্মীদের সাথে আলোচনার পরে আমি ভেবেছিলাম যে ভের মাধ্যমে টাইপের অনুক্রমের উপযুক্ত ব্যবহার সম্পর্কে লোকের মতামত কী ছিল?
উদাহরণস্বরূপ আমি বরং প্রশ্নবিদ্ধ পরিস্থিতিতে অলসভাবে ব্যবহার করেছি, যেমন: -
foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
বর্ণের আরও বৈধ ব্যবহার নিম্নরূপ:
var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
মজার বিষয় হল লিনকুই কিছুটা ধূসর অঞ্চল বলে মনে হচ্ছে, যেমন: -
var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be here.
এটি পরিষ্কার হয়ে গেছে যে ফলাফলগুলি কীভাবে হবে যা এটি এমন এক ধরণের যা আইয়ুনিউরেবল কার্যকর করে, তবে এটি সম্পূর্ণভাবে সুস্পষ্ট নয় যে একইভাবে কোনও নতুন অবজেক্টের ঘোষক ভ্যার।
এটি লিনকিউ অবজেক্টে যেমন আসে তখন এটি আরও খারাপ eg
var results = from item in someList
where item != 3
select item;
এটি সমকক্ষ পূর্বাচনের চেয়ে ভাল (কোনও তালিকায় ভের আইটেম) ... // ...} সমতুল্য।
এখানে ধরণের সুরক্ষা সম্পর্কে সত্যিকারের উদ্বেগ রয়েছে - উদাহরণস্বরূপ যদি আমরা সেই ক্যোয়ারির ফলাফলগুলি একটি ওভারলোডেড পদ্ধতিতে স্থাপন করি যেটি গ্রহণযোগ্য <int> এবং IEnumerable <ডাবল> কলকারী অজান্তেই ভুল টাইপের মধ্যে দিয়ে যেতে পারে।
var
নেই শক্তিশালী টাইপিং কিছু যা যখন overloads গড় কম্পাইলার এরর জারি না করা যেতে পারে বিবর্ধিত করা হয় বজায় রাখা কিন্তু প্রশ্ন সত্যিই তা বিপদজনক জন্য টাইপ না অবিলম্বে সংজ্ঞা আপাত হতে হয়, যখন আপনি অনিচ্ছাকৃতভাবে একটি পদ্ধতি ভুল টাইপ পাস।
var i = 0;
== ব্যর্থ! var c = new CrazyFrigginLongClassName();
== জয়!
var readabilityBeDamned = true;