আমি সি # ব্যবহার করি এবং এটি আমার পন্থা। বিবেচনা:
class Foo
{
private readonly int i;
private readonly string s;
private readonly Bar b;
public int I { get { return i; } }
}
অপশন 1. option চ্ছিক পরামিতি সহ নির্মাতা
public Foo(int i = 0, string s = "bla", Bar b = null)
{
this.i = i;
this.s = s;
this.b = b;
}
যেমন ব্যবহার করা হয় new Foo(5, b: new Bar(whatever))
। জাভা বা সি # সংস্করণের জন্য 4.0 এর আগে নয়। তবে এখনও দেখানো মূল্যবান, কারণ এটি কীভাবে সমস্ত সমাধান ভাষা অজ্ঞেয় সম্পর্কিত নয়।
বিকল্প ২. একক প্যারামিটার অবজেক্ট গ্রহণকারী কনস্ট্রাক্টর
public Foo(FooParameters parameters)
{
this.i = parameters.I;
}
class FooParameters
{
public int I { get; set; }
public string S { get; set; }
public Bar B { get; set; }
public FooParameters() { }
}
ব্যবহারের উদাহরণ:
FooParameters fp = new FooParameters();
fp.I = 5;
fp.S = "bla";
fp.B = new Bar();
Foo f = new Foo(fp);`
On.০ থেকে সি # এটি অবজেক্ট ইনিশিয়ালাইজার সিনট্যাক্সের সাথে আরও সুন্দর করে তোলে (পূর্ববর্তী উদাহরণের সাথে শব্দার্থগতভাবে সমান):
FooParameters fp = new FooParameters { I = 5, S = "bla", B = new Bar() };
Foo f = new Foo(fp);
বিকল্প 3:
এত বড় সংখ্যক প্যারামিটারের প্রয়োজন নেই আপনার শ্রেণিকে নতুন করে ডিজাইন করুন। আপনি এর পুনরারম্ভকে একাধিক ক্লাসে বিভক্ত করতে পারেন। অথবা প্যারামিটারগুলি কনস্ট্রাক্টরের কাছে নয় কেবল চাহিদা অনুসারে নির্দিষ্ট পদ্ধতিগুলিতে পাস করুন। সর্বদা কার্যকর হয় না, কিন্তু যখন এটি হয়, এটি করা মূল্যবান।