سازندههای پیشرفته
ماهیت تمامی برنامههای امروزی به گونهایست که با حجم عظیمی از دادهها سرو کار دارند. برای مدیریت دادهها، نیاز به کلاسهاییست که در مهندسی نرمافزار آنها را Entity Types مینامیم. این کلاسها به عنوان بستههایی از دادهها محسوب میشوند. معضل فعلی موجود در رابطه با Entity Typeها تعدد سازندههای آنها میباشد و ممکن است شما نیز با این مشکل برخورد کرده باشید. به این صورت که در سناریوهای مختلف، برنامهنویسان مجبور هستند سازنده یک کلاس را به چند شکل سربارگذاری کنند. سی شارپ ۳٫۰ راه چارهای فوقالعاده برای این مشکل ارائه میدهد. Object initializer حالت پیشرفتهای از سازنده میباشد.
class Person { private string firstname; public string FirstName { get { return firstname; } set { firstname = value; } } private string lastname; public string LastName { get { return lastname; } set { lastname = value; } } private int age; public int Age { get { return age; } set { age = value; } } }
این کلاس شامل سه متغیر بوده و برای هر متغیر خاصیتی تعریف شدهاست. اینک این سوالات مطرح میشوند: سازنده این کلاس را به چند شکل باید سربارگذاری کرد؟ سازندهای که هر سه متغیر را مقداردهی کند؟ شاید در مواردی هر سه متغیر در دست نباشد در این صورت چه سازندهای باید فراخوانی شود؟ سی شارپ ۳٫۰ راه حل زیر را ارائه میدهد. فرض کنید بخوانیم نمونهای ازکلاس Person را ایجاد کنیم. همانطور که مشاهده میکنید، در سی شارپ ۳٫۰ به هنگام نمونه سازی، این امکان در اختیار برنامه نویس قرار میگیرد که هر یک از خصیصههای موجود در کلاس را به دلخواه و بنا به نیاز مقدار دهی کند به صورت زیر:
Person person = new Person ( Age = 21, FirstName = "James", LastName = "Frank");