C#高级编程:对象初始化器详解

需积分: 0 1 下载量 197 浏览量 更新于2024-08-19 收藏 903KB PPT 举报
"C#高级编程中的对象初始化器是用于简化创建对象并设置其属性的语法,它使得在实例化对象时能一次性设置多个属性,从而减少代码量。本章还将涉及其他编程特性,如扩展方法、分部类与分部方法、匿名类型以及特殊参数形式。" 在C#中,对象初始化器是一种方便的语法结构,允许在创建对象的同时直接赋值给它的属性。在示例中,我们看到三种创建`Student`对象的方式: 1. **手动设置属性**:首先,我们创建一个`Student`对象`stu`,然后分别设置它的`StuNo`、`Cname`属性,并调用`Study()`方法。这种方式需要逐个指定属性。 ```csharp Student stu = new Student(); stu.StuNo = "NFSN20123301"; stu.Cname = "张三"; stu.Study(); ``` 2. **自定义构造函数**:通过定义一个接受`StuNo`和`Cname`作为参数的构造函数,可以直接在创建`stu1`时传入这些值,简化了代码。 ```csharp Student stu1 = new Student("NFSN20113505", "李四"); stu1.Study(); ``` 3. **对象初始化语法**:最后,使用对象初始化器,可以在创建`stu2`时直接初始化`StuNo`和`Cname`属性,使得代码更加简洁且易读。 ```csharp Student stu2 = new Student { StuNo = "NFSN20101507", Cname = "王五" }; stu2.Study(); ``` 除了对象初始化器,本章还介绍了其他高级特性: **集合初始化器**:集合初始化器使得可以方便地一次性初始化集合对象,如`List<T>`,例如创建一个`Contact`列表,并为每个`Contact`设置`Name`和`PhoneNumbers`。 ```csharp var contacts = new List<Contact> { new Contact { Name = "ChrisSmith", PhoneNumbers = {"206-555-0101", "425-882-8080"} }, new Contact { Name = "BobHarris", PhoneNumbers = {"650-555-0199"} } }; ``` **扩展方法**:扩展方法允许向已经存在的类型添加新方法,而无需修改原始类型。定义扩展方法时,需要将其放在静态类中,方法本身也要声明为静态,并使用`this`关键字修饰第一个参数。扩展方法只能被正确类型的实例调用。 例如,如果我们想为`string`类型添加一个`IsNullOrEmpty`方法: ```csharp public static class StringExtensions { public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } } ``` 现在,任何字符串实例都可以调用`IsNullOrEmpty`方法。 本章的其他主题包括匿名类型,它们在不需为数据创建显式类型的情况下提供便利,以及特殊参数形式,比如out和ref参数,它们允许在方法调用中传递变量的引用而不是值。学习这些特性将有助于提升C#编程的灵活性和效率。