国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#中使用list封裝多個同類型對象以及組合拓展實(shí)體的應(yīng)用

這篇具有很好參考價值的文章主要介紹了C#中使用list封裝多個同類型對象以及組合拓展實(shí)體的應(yīng)用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、list使用方法

在C#中,使用List<T>集合是封裝多個同類型對象的常用方式。List<T>是泛型集合,T是集合中元素的類型。下面是一個簡單的例子,演示如何創(chuàng)建一個List<T>,并向其中添加對象。

首先,假設(shè)我們有一個類,比如一個Person類,它有一些屬性:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    
    // 假設(shè)還有其他屬性和方法
}

然后,我們可以這樣使用List<T>

using System;
using System.Collections.Generic;  // 確保引入了這個命名空間

public class Program
{
    public static void Main()
    {
        // 創(chuàng)建一個Person對象的List
        List<Person> people = new List<Person>();

        // 創(chuàng)建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}");
        }
    }
}

上面的代碼首先導(dǎo)入了必要的命名空間System.Collections.Generic來使用List<T>。然后,創(chuàng)建了一個Person類型的List,并添加了幾個Person對象到這個列表中。foreach循環(huán)被用來遍歷這個列表并打印每個人的信息。

這樣,我們就可以管理一個動態(tài)數(shù)組(列表)的同類型對象了,而且List<T>提供了許多方便的方法,如Add、Remove、Find等,來操作集合中的元素。

二、C#組合拓展實(shí)體

在C#中,“組合”(Composition)通常是指一種設(shè)計(jì)模式,它表明一個類包含了一個或者多個其他類的實(shí)例來實(shí)現(xiàn)代碼復(fù)用或者增加新的功能。這與"繼承"不同,繼承表示一個類是另一個類的子類。“拓展實(shí)體”(Extended Entities)一般指的是在組合模式中被用來拓展功能的那些包含的類的實(shí)例。 (定義有些復(fù)雜,不用管直接看例子也行)

組合被用于當(dāng)我們想要將一些行為或者狀態(tài)封裝到一個單獨(dú)的類中,并且希望通過含有這些類的實(shí)例的方式在多個地方重用它們。這通常是在希望建立一個對象,其行為是由多個源對象組成的時候,比如在創(chuàng)建一個復(fù)雜對象時,這個對象的功能需要來自于多個不同的源對象。

具體例子如下:

設(shè)想我們正在構(gòu)建一個游戲,有一個Weapon類(武器)和一個Character類(人物)。在這個游戲中,每個角色可以擁有不同的武器。在這里,Weapon是一個可以被組合到Character中的實(shí)體。

首先,定義一個Weapon類:

public class Weapon //這個類代表游戲中的武器,它有兩個公共屬性和一個構(gòu)造函數(shù),以及一個用于執(zhí)行攻擊動作的方法
{
//這是兩個公開屬性
    public string Name { get; set; }  //武器的名稱
    public int Damage { get; set; }   //使用這個武器進(jìn)行攻擊時造成的傷害
//構(gòu)造函數(shù),用來創(chuàng)建weapon類的新實(shí)例,就是說我們創(chuàng)建Weapon類的時候,要提供Name和Damage來初始化對象
    public Weapon(string name, int damage)
    {
        Name = name;
        Damage = damage;
    }
//一個不返回任何值的方法,調(diào)用這個方法后,會顯示武器的名稱和攻擊造成的傷害
    public void Attack()
    {
        Console.WriteLine($"{Name} attacks for {Damage} damage!");
        //在這個字符串中,{Name}和{Damage}是插值表達(dá)式,它們會被替換為對象當(dāng)前的Name和Damage屬性的值。
    }
}

然后,定義一個Character類,并在其中組合Weapon

public class Character     //這個是游戲中的角色,并演示了怎樣通過組合來使用之前定義的Weapon類
{
// 兩個公開屬性
    public string Name { get; set; }  //用于存儲角色的名稱
    public Weapon EquippedWeapon { get; set; }  //用于存儲角色當(dāng)前裝備的武器,這個屬性可以持有一個Weapon類的實(shí)例,或者為null(如果角色沒有裝備武器)

//構(gòu)造函數(shù),它接收一個參數(shù)name,用于在創(chuàng)建Character實(shí)例時設(shè)置角色的名稱
    public Character(string name)
    {
        Name = name;
    }
//這是一個方法,用于為角色準(zhǔn)備一個武器,這個方法接收一個Weapon實(shí)例作為參數(shù),并將其分配給EquippedWeapon 屬性。然后,它打印一條消息到控制臺,表示角色已經(jīng)裝備了該武器。
    public void EquipWeapon(Weapon weapon)
    {
        EquippedWeapon = weapon;
        Console.WriteLine($"{Name} equipped {weapon.Name}!");
    }
// Attack方法用于執(zhí)行攻擊,它首先檢查EquippedWeapon屬性是否為null,如果角色有武器,那么就調(diào)用attack方法,要是么得,就在控制臺上打印一條消息,說明角色無法攻擊,因?yàn)闆]武器。
    public void Attack()
    {
        if (EquippedWeapon != null)
        {
            EquippedWeapon.Attack();
        }
        else
        {
            Console.WriteLine($"{Name} has no weapon to attack!");
        }
    }
}

現(xiàn)在,我們可以創(chuàng)建WeaponCharacter的實(shí)例,并將一個武器實(shí)體組合到一個角色中:

public class Program //Program是一個包含Main方法的類。Main方法是C#程序的入口點(diǎn),也就是運(yùn)行程序時第一個被調(diào)用的方法。
{
    public static void Main()
    {
        Weapon sword = new Weapon("Sword", 50); //創(chuàng)建武器對象,Sword 武器是一把劍,傷害是50
        Character knight = new Character("Knight"); //創(chuàng)建一個名為Knight(大俠)的角色

        knight.EquipWeapon(sword);//裝備武器:這里調(diào)用了knight對象的EquipWeapon方法,并將之前創(chuàng)建的sword實(shí)例作為參數(shù)傳遞進(jìn)去。這個方法會將sword對象賦值給knight對象的EquippedWeapon屬性,并在控制臺輸出一條消息表明"Knight"裝備了"Sword"。
        knight.Attack();//執(zhí)行攻擊:這行代碼調(diào)用了knight對象的Attack方法。Attack方法檢查EquippedWeapon是否不為空(在這個例子中,我們剛剛裝備了"Sword"),然后調(diào)用EquippedWeapon(即sword對象)的Attack方法。這最終將在控制臺輸出一條消息,表明"Sword"攻擊并造成了50點(diǎn)傷害。
    }
}

在這個例子中,當(dāng)knight.Attack()被調(diào)用時,它實(shí)際上會調(diào)用EquippedWeaponAttack()方法,這是組合在工作的例子。這樣,Character類通過組合Weapon實(shí)體來拓展它的功能。這種方式允許Character獲得Weapon的功能并且可以動態(tài)地改變,這是相對于繼承更加靈活的設(shè)計(jì)方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-835710.html

到了這里,關(guān)于C#中使用list封裝多個同類型對象以及組合拓展實(shí)體的應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包