با استفاده از قاعده نوشتاری Object Initializer در سی شارپ میتوان فیلد ها و پروپرتی های یک کلاس را در زمان ایجاد یک شی از آن مقدار دهی اولیه کرد. در این فصل با این قاعده نوشتاری آشنا خواهیم شد.
Object Initializer
سی شارپ از نسخه سه به بعد قاعده نوشتاری Object Initializer را معرفی کرد. با استفاده از این قاعده نوشتاری می توان یک شی از یک کلاس و یا کالکشن را در زمان نمونهسازی، مقداردهی اولیه کرد. این قاعده نوشتاری به شما اجازه می دهد که مقادیر فیلد ها و پروپرتی ها را در زمان ایجاد شی بدون فراخوانی سازنده، مقداردهی اولیه کنید:
public class Student { public int StudentID { get; set; } public string StudentName { get; set; } public int Age { get; set; } public string Address { get; set; } } class Program { static void Main(string[] args) { Student std = new Student() { StudentID = 1, StudentName = "Bill", Age = 20, Address = "New York" }; } }
در نمونه مثال بالا کلاس Student بدون سازنده تعریف شده است. در متد main ما شی ایی از Student را ایجاد و مقادیری را برای پروپرتی های آن در نظر گرفته ایم. به این روش مقدار دهی اولیه، object initializer گفته می شود. کامپایلر چنین مقداردهی را به شکل زیر کامپایل خواهد کرد :
Student __student = new Student(); __student.StudentID = 1; __student.StudentName = "Bill"; __student.Age = 20; __student.StandardID = 10; __student.Address = "Test"; Student std = __student;
مقدار دهی اولیه برای کالکشن ها
مقدار دهی اولیه برای کالکشن ها به همان روشی که برای اشیای یک کلاس استفاده میشد، انجام می شود :
var student1 = new Student() { StudentID = 1, StudentName = "John" }; var student2 = new Student() { StudentID = 2, StudentName = "Steve" }; var student3 = new Student() { StudentID = 3, StudentName = "Bill" } ; var student4 = new Student() { StudentID = 3, StudentName = "Bill" }; var student5 = new Student() { StudentID = 5, StudentName = "Ron" }; IList<Student> studentList = new List<Student>() { student1, student2, student3, student4, student5 };
شما همچنین می توانید کالکشن ها و اشیا را در یک زمان مقدار دهی اولیه کنید :
IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John"} , new Student() { StudentID = 2, StudentName = "Steve"} , new Student() { StudentID = 3, StudentName = "Bill"} , new Student() { StudentID = 3, StudentName = "Bill"} , new Student() { StudentID = 4, StudentName = "Ram" } , new Student() { StudentID = 5, StudentName = "Ron" } };
همچنین می توان از مقدار null به عنوان یک عنصر برای مقداردهی استفاده کرد :
IList<Student> studentList = new List<Student>() { new Student() { StudentID = 1, StudentName = "John"} , null };