এর মধ্যে পার্থক্য কী এবং কেবল একটি পদ্ধতি তৈরি করে যা একটি তালিকা বা অ্যারে পায়?
দুইটার মধ্যে পার্থক্য
void M(params int[] x)
এবং
void N(int[] x)
এমকে কি এভাবে ডাকা যেতে পারে:
M(1, 2, 3)
বা এই মত:
M(new int[] { 1, 2, 3 });
তবে এনকে প্রথম উপায়ে নয়, কেবল দ্বিতীয় উপায়ে কল করা যেতে পারে ।
পারফরম্যান্সে সম্ভবত কিছুটা প্রভাব ফেলেছে?
পারফরম্যান্সের প্রভাবটি হ'ল আপনি M
প্রথম উপায়ে বা দ্বিতীয় উপায়ে কল করুন, যেভাবেই আপনি অ্যারে তৈরি করেছেন। একটি অ্যারে তৈরির একটি কার্যকারিতা প্রভাব রয়েছে কারণ এতে সময় এবং মেমরি উভয়ই লাগে। মনে রাখবেন যে পারফরম্যান্সের প্রভাবগুলি পারফরম্যান্স লক্ষ্যগুলির বিরুদ্ধে পরিমাপ করা উচিত; এটি অতিরিক্ত সম্ভাব্য অ্যারে তৈরির ব্যয়টি গেটিং ফ্যাক্টর যা বাজারের সাফল্য এবং ব্যর্থতার মধ্যে পার্থক্য unlikely
আপনি সীমাহীন পরামিতিগুলির সাথে কোনটি পছন্দ করবেন তা আমি পুরোপুরি বুঝতে বা দেখতে পাই না।
কোডটির লেখক যে পদ্ধতিটি কল করছেন এটি বিশুদ্ধ এবং সম্পূর্ণরূপে একটি সুবিধা; এটি সহজভাবে খাটো এবং লিখতে সহজ
M(1, 2, 3);
পরিবর্তে লেখার
M(new int[] { 1, 2, 3 });
এটি কেবল কলারের পক্ষের কয়েকটি কীস্ট্রোক সংরক্ষণ করে। এটাই সব।
কয়েকটি প্রশ্ন আপনি জিজ্ঞাসা করেননি তবে সম্ভবত এর উত্তরটি জানতে চান:
এই বৈশিষ্ট্যটি কী বলা হয়?
যে পদ্ধতিগুলি কলার দিকে ভেরিয়েবল সংখ্যার তর্কগুলি পাস করার অনুমতি দেয় তাদের ভেরিয়াদিক বলে । প্যারাম পদ্ধতিগুলি কীভাবে সি # বিচিত্র পদ্ধতিগুলি প্রয়োগ করে।
ওভারলোড রেজোলিউশন কীভাবে একটি বৈকল্পিক পদ্ধতিতে কাজ করে?
যখন ওভারলোড রেজোলিউশন সমস্যার মুখোমুখি হয়, সি # দুটি "স্বাভাবিক" এবং "বর্ধিত" ফর্ম বিবেচনা করে এবং উভয় প্রযোজ্য হলে "স্বাভাবিক" ফর্মটি সর্বদা জয়ী হয়। উদাহরণস্বরূপ, এটি বিবেচনা করুন:
void P(params object[] x){}
এবং আমাদের একটি কল আছে
P(null);
দুটি কার্যকর সম্ভাবনা আছে। "সাধারণ" ফর্মে আমরা P
অ্যারেটির জন্য একটি নাল রেফারেন্স কল করি এবং পাস করি । "প্রসারিত" আকারে, আমরা কল করি P(new object[] { null })
। এই ক্ষেত্রে, স্বাভাবিক ফর্ম জয়ী। আমাদের যদি কোনও কল ছিল P(null, null)
তবে স্বাভাবিক ফর্মটি প্রয়োগযোগ্য নয় এবং ফর্মটি ডিফল্টরূপে জিতে যায়।
চ্যালেঞ্জ : ধরুন আমাদের কাছে var s = new[] { "hello" };
একটি কল আছে P(s);
। কল সাইটে কী ঘটে এবং কেন তা বর্ণনা করুন। আপনি অবাক হতে পারেন!
চ্যালেঞ্জ : ধরুন আমরা উভয় আছে void P(object x){}
এবং void P(params object[] x){}
। কি করে P(null)
এবং কেন?
চ্যালেঞ্জ : ধরুন আমরা উভয় আছে void M(string x){}
এবং void M(params string[] x){}
। কি করে M(null)
এবং কেন? এটি আগের মামলার থেকে কীভাবে আলাদা?