电子商务网站建设课,论坛网站模,wordpress nikkon,免费ppt模板网站下载文章目录 一、list使用方法二、C#组合拓展实体 一、list使用方法
在C#中#xff0c;使用ListT集合是封装多个同类型对象的常用方式。ListT是泛型集合#xff0c;T是集合中元素的类型。下面是一个简单的例子#xff0c;演示如何创建一个ListT#… 文章目录 一、list使用方法二、C#组合拓展实体 一、list使用方法
在C#中使用ListT集合是封装多个同类型对象的常用方式。ListT是泛型集合T是集合中元素的类型。下面是一个简单的例子演示如何创建一个ListT并向其中添加对象。
首先假设我们有一个类比如一个Person类它有一些属性
public class Person
{public string Name { get; set; }public int Age { get; set; }// 假设还有其他属性和方法
}然后我们可以这样使用ListT
using System;
using System.Collections.Generic; // 确保引入了这个命名空间public class Program
{public static void Main(){// 创建一个Person对象的ListListPerson people new ListPerson();// 创建Person对象并添加到List中people.Add(new Person() { Name Alice, Age 30 });people.Add(new Person() { Name Bob, Age 25 });people.Add(new Person() { Name Charlie, Age 35 });// 遍历List并打印每个Person对象的信息foreach (Person p in people){Console.WriteLine($Name: {p.Name}, Age: {p.Age});}}
}上面的代码首先导入了必要的命名空间System.Collections.Generic来使用ListT。然后创建了一个Person类型的List并添加了几个Person对象到这个列表中。foreach循环被用来遍历这个列表并打印每个人的信息。
这样我们就可以管理一个动态数组列表的同类型对象了而且ListT提供了许多方便的方法如Add、Remove、Find等来操作集合中的元素。
二、C#组合拓展实体
在C#中“组合”Composition通常是指一种设计模式它表明一个类包含了一个或者多个其他类的实例来实现代码复用或者增加新的功能。这与继承不同继承表示一个类是另一个类的子类。“拓展实体”Extended Entities一般指的是在组合模式中被用来拓展功能的那些包含的类的实例。 定义有些复杂不用管直接看例子也行
组合被用于当我们想要将一些行为或者状态封装到一个单独的类中并且希望通过含有这些类的实例的方式在多个地方重用它们。这通常是在希望建立一个对象其行为是由多个源对象组成的时候比如在创建一个复杂对象时这个对象的功能需要来自于多个不同的源对象。
具体例子如下
设想我们正在构建一个游戏有一个Weapon类武器和一个Character类人物。在这个游戏中每个角色可以拥有不同的武器。在这里Weapon是一个可以被组合到Character中的实体。
首先定义一个Weapon类
public class Weapon //这个类代表游戏中的武器它有两个公共属性和一个构造函数以及一个用于执行攻击动作的方法
{
//这是两个公开属性public string Name { get; set; } //武器的名称public int Damage { get; set; } //使用这个武器进行攻击时造成的伤害
//构造函数用来创建weapon类的新实例就是说我们创建Weapon类的时候要提供Name和Damage来初始化对象public Weapon(string name, int damage){Name name;Damage damage;}
//一个不返回任何值的方法调用这个方法后会显示武器的名称和攻击造成的伤害public void Attack(){Console.WriteLine(${Name} attacks for {Damage} damage!);//在这个字符串中{Name}和{Damage}是插值表达式它们会被替换为对象当前的Name和Damage属性的值。}
}然后定义一个Character类并在其中组合Weapon
public class Character //这个是游戏中的角色并演示了怎样通过组合来使用之前定义的Weapon类
{
// 两个公开属性public string Name { get; set; } //用于存储角色的名称public Weapon EquippedWeapon { get; set; } //用于存储角色当前装备的武器这个属性可以持有一个Weapon类的实例或者为null如果角色没有装备武器//构造函数它接收一个参数name用于在创建Character实例时设置角色的名称public Character(string name){Name name;}
//这是一个方法用于为角色准备一个武器这个方法接收一个Weapon实例作为参数并将其分配给EquippedWeapon 属性。然后它打印一条消息到控制台表示角色已经装备了该武器。public void EquipWeapon(Weapon weapon){EquippedWeapon weapon;Console.WriteLine(${Name} equipped {weapon.Name}!);}
// Attack方法用于执行攻击它首先检查EquippedWeapon属性是否为null如果角色有武器那么就调用attack方法要是么得就在控制台上打印一条消息说明角色无法攻击因为没武器。public void Attack(){if (EquippedWeapon ! null){EquippedWeapon.Attack();}else{Console.WriteLine(${Name} has no weapon to attack!);}}
}现在我们可以创建Weapon和Character的实例并将一个武器实体组合到一个角色中
public class Program //Program是一个包含Main方法的类。Main方法是C#程序的入口点也就是运行程序时第一个被调用的方法。
{public static void Main(){Weapon sword new Weapon(Sword, 50); //创建武器对象Sword 武器是一把剑,伤害是50Character knight new Character(Knight); //创建一个名为Knight大侠的角色knight.EquipWeapon(sword);//装备武器这里调用了knight对象的EquipWeapon方法并将之前创建的sword实例作为参数传递进去。这个方法会将sword对象赋值给knight对象的EquippedWeapon属性并在控制台输出一条消息表明Knight装备了Sword。knight.Attack();//执行攻击这行代码调用了knight对象的Attack方法。Attack方法检查EquippedWeapon是否不为空在这个例子中我们刚刚装备了Sword然后调用EquippedWeapon即sword对象的Attack方法。这最终将在控制台输出一条消息表明Sword攻击并造成了50点伤害。}
}在这个例子中当knight.Attack()被调用时它实际上会调用EquippedWeapon的Attack()方法这是组合在工作的例子。这样Character类通过组合Weapon实体来拓展它的功能。这种方式允许Character获得Weapon的功能并且可以动态地改变这是相对于继承更加灵活的设计方法。