object} অবজেক্ট পরামিতি তৈরি?


15

আমি একটি বই থেকে কোডের একটি অংশ ডিকোড করার চেষ্টা করছি:

List<Person> people = new List<Person>()
{
new Person {FirstName="Homer",LastName="Simpson",Age=47},
new Person {FirstName="Marge",LastName="Simpson",Age=45}
};

ব্যক্তিরা কেবল একটি সাধারণ শ্রেণি যা তাদের তৈরি, একগুচ্ছ ক্ষেত্র: নাম, পদবি, ইত্যাদি ...

আমি যা বুঝতে পারি না তা হ'ল, আমরা কি নন-কোঁকড়ানো বন্ধনীগুলিতে ব্যক্তিত্বের কোনও কনস্ট্রাক্টরকে পরামিতি প্রেরণ করি? আমি এই কোডটি প্রতিলিপি দেওয়ার চেষ্টা করেছি, তবে এটি কোনও উড়ালকারী বলে মনে হচ্ছে না?

ইনপুট জন্য ধন্যবাদ।



1
"আমি এই কোডটির অনুলিপি করার চেষ্টা করেছি, তবে এটি উড়ে যাচ্ছে বলে মনে হচ্ছে না" <- এই সিনট্যাক্সটি উপলভ্য হওয়ার জন্য আপনাকে সি # 3 (ভিএস ২০০৮) বা পরে ব্যবহার করতে হবে later
আকাশম

দুটি ধারণার মধ্যে পার্থক্য সম্পর্কে সচেতন হন: অবজেক্ট ইনিশিয়ালাইজেশন এবং অবজেক্ট পপুলেশন। সাধারণভাবে আপনি কনস্ট্রাক্টরে ইনিশিয়েশন করেন। আপনার উদাহরণের পদ্ধতিটি জনসংখ্যার পক্ষে আরম্ভের জন্য নয় সবচেয়ে ভাল ব্যবহৃত হয়।
NoChance

উত্তর:


27

সি # আপনাকে যখন বস্তুটি আরম্ভ করা হয় তখন কোঁকড়া ধনুর্বন্ধনীগুলিতে সম্পত্তি প্যারামিটার নির্দিষ্ট করতে দেয়। এটি আপনাকে কোন আইটেমটি আরম্ভ করতে হবে এবং কোনটি ডিফল্ট হিসাবে ছেড়ে যাবে তা বেছে নিতে ও চয়ন করতে দেয়।

অন্যদিকে একজন কনস্ট্রাক্টর প্যারামিটারের একটি নির্দিষ্ট সেট সহ কোডের একটি একক ব্লক চালায়। সুতরাং একই প্রভাব পেতে আপনাকে একাধিক কনস্ট্রাক্টর তৈরি করতে হবে যা বিভিন্ন বৈশিষ্ট্যের সংমিশ্রণে আপনি আরম্ভ করতে চাইতে পারেন, যা ক্লান্তিকর হতে পারে।

var x = new Person {FirstName="Homer",LastName="Simpson",Age=47}; 

এর ঠিক সমান:

var x = new Person();
x.FirstName="Homer";
x.LastName="Simpson";
x.Age=47;

এটি ছোট এবং তাত্ক্ষণিকভাবে চোখের তুলনায় সহজ cept

এটি আপনার প্রশ্নের মতো আপনার মত প্রকাশের মতো নির্মাণের জন্যও অনুমতি দেয়, যা আপনাকে অস্থায়ী পরিবর্তনগুলি তৈরি করতে হয় এবং তাদের তালিকায় যুক্ত করার আগে আমি এখানে যেমন করেছিলাম সেগুলি শুরু করতে হলে খুব ক্লান্তিকর হবে। (এটি কীভাবে আপনার করতে হবে।) আপনার স্পেসিফিক প্যারামিটারগুলির তালিকাটি গ্রহণ করে বা উপলভ্য নাও হতে পারে এমন কোনও স্পষ্টরূপে সংজ্ঞায়িত কনস্ট্রাক্টরের প্রয়োজন ছাড়াই requ

এছাড়াও, নোট করুন যে কোনও কনস্ট্রাক্টর যখন প্রাইভেট সেটার দিয়ে প্রপার্টি ইনিশিয়েল করতে পারে তখন এই কৌশলটি (প্রদত্ত উদাহরণ থেকে স্পষ্ট হওয়া উচিত) কেবলমাত্র যদি আপনার সম্পত্তির জন্য পাবলিক সেটার থাকে তবেই কাজ করবে। এছাড়াও নোট করুন যে আমার সংক্ষিপ্ত উদাহরণটি সুস্পষ্টভাবে ডিফল্ট (প্যারামিটারলেস) কনস্ট্রাক্টর নামে অভিহিত, যার ফলে উপস্থিত থাকতে হবে।


এটি যুক্তিযুক্ত হতে পারে যে এর কারণে, কোঁকড়ানো ধনুর্বন্ধনী মধ্যে প্রারম্ভিক বৈশিষ্ট্যগুলি অবশ্যই প্রকাশ্যে স্থায়ী হতে হবে।
ইয়াম মার্কোভিচ

@ ইয়ামমার্কোভিচ আহ। হ্যাঁ. নোটটি সেই প্রভাবটিতে যুক্ত হয়েছে।
টাইলার

2
আহ, আমি আলোকিত, দুর্দান্ত ব্যাখ্যা।
RealityDysfunction

2
একটি একক নির্মাতার সাথে খুব অনুরূপ প্রভাব পেতে, আপনি এর সমস্ত পরামিতিগুলি alচ্ছিক করতে পারেন। তারপর আপনি ভালো কিছু করতে পারে new Person(lastName: "Simpson"), যাব firstNameএবং ageপ্যারামিটার।
সুইভ

আপনি যেগুলি কেবল কন্সট্রাক্টরের কাছে পাস করতে পারবেন না তা এই var x = new Person("Homer", "Simpson", 47);
বিষয়টি সম্বোধন করে না
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.