下面是详细讲解“C#中结构(struct)的部分初始化和完全初始化实例分析”的完整攻略。
什么是结构(struct)
在C#中,结构是一种值类型的数据结构,可以在它里面定义变量和方法,其中变量被称为字段。结构和类很相似,但是结构有一些自己的特点,如:
- 结构是值类型,而类是引用类型;
- 结构不支持继承;
- 结构不能定义默认构造函数;
- 结构可以定义ParamArray参数。
结构的部分初始化
在C# 3.0之前,结构只能通过完全初始化的方式进行初始化。但是,C# 3.0引入了部分初始化的方式,可以让我们只初始化结构的一部分成员变量。例如:
struct Person
{
public string Name;
public int Age;
public string Address;
}
Person person1 = new Person { Name = "John", Age = 30 }; // 部分初始化
在这个例子中,我们只初始化了Person结构中的Name和Age字段,而Address字段没有被初始化,因为我们没有给它赋值。这种方式可以很方便地对结构进行初始化,但是需要注意的是,被省略的成员变量的值将被设为该类型的默认值。
结构的完全初始化
如果需要给结构的所有成员变量都初始化,可以使用完全初始化的方式。例如:
struct Person
{
public string Name;
public int Age;
public string Address;
}
Person person2 = new Person { Name = "John", Age = 30, Address = "China" }; // 完全初始化
在这个例子中,我们给结构中的所有成员变量都赋了值,分别是Name、Age、Address。这种方式比部分初始化的方式多了一些代码量,但是可以确保所有的成员变量都被赋值了。
结构的默认构造函数
结构不能定义默认构造函数,也就是没有无参构造函数。因为结构中的变量必须在创建时被初始化,否则它们会被设为默认值。如果你想要创建一个不带参数的结构,那么可以使用部分初始化的方式,对结构中的某些字段进行初始化,例如:
struct Person
{
public string Name;
public int Age;
public string Address;
}
Person person3 = new Person { Name = "John" }; // 部分初始化
在这个例子中,我们只初始化了结构中的Name字段,而Age和Address字段会根据它们的类型被设为默认值0和null。
示例
下面是一个完整的示例,展示了结构的部分初始化和完全初始化:
using System;
struct Person
{
public string Name;
public int Age;
public string Address;
}
class Program
{
static void Main(string[] args)
{
Person person1 = new Person { Name = "John", Age = 30 }; // 部分初始化
Console.WriteLine("Name: {0}, Age: {1}, Address: {2}", person1.Name, person1.Age, person1.Address);
Person person2 = new Person { Name = "John", Age = 30, Address = "China" }; // 完全初始化
Console.WriteLine("Name: {0}, Age: {1}, Address: {2}", person2.Name, person2.Age, person2.Address);
Person person3 = new Person { Name = "John" }; // 部分初始化
Console.WriteLine("Name: {0}, Age: {1}, Address: {2}", person3.Name, person3.Age, person3.Address);
}
}
输出结果:
Name: John, Age: 30, Address:
Name: John, Age: 30, Address: China
Name: John, Age: 0, Address:
在这个示例中,我们先定义了一个名为Person的结构,然后创建了3个Person类型的对象。第一个对象person1只赋值了Name和Age字段,第二个对象person2所有字段都被赋了值,第三个对象person3只赋了Name字段。最后在控制台打印了这3个对象的所有字段的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中结构(struct)的部分初始化和完全初始化实例分析 - Python技术站