首页 > 编程语言 >C#集合

C#集合

时间:2023-01-21 00:12:17浏览次数:49  
标签:Console name C# arrayList 动物 WriteLine 集合 public

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace learn_collection
{
    internal class Program
    {
        static void Main(string[] args)
        {
            ArrayList arrayList = new ArrayList();
            arrayList.Add(new Chicken("SuSan"));
            arrayList.Add(new Cow("John"));
            foreach (Animal item in arrayList)
            {
                Console.WriteLine($"抓到一只动物,动物是{item.ToString()}");
                Console.WriteLine($"抓到一只动物,动物是{item.GetType()}");

                if (item.ToString().Contains("Cow")){
                    (item as Cow).MakeMilk();
                }
                else
                {
                    (item as Chicken).MakeEgg();
                }
            }
            // 把农场的鸡都卖出去
            for (int i = (arrayList.Count -1 ); i>=0; i--)
            {
                arrayList.RemoveAt(i);
            }
            Console.WriteLine($"农场现在有{arrayList.Count}只动物");
            // 农场再购买一批动物,
            // 由于Cow和Chicken具有共同的基类,所以可以使用Animal作为类型声明来声明一个动物数组
            Animal[] animals = new Animal[] {new Cow("Hello"), new Chicken("World")};
            // 集合可以通过AddRange来把一个子数组\列表一起加进来
            arrayList.AddRange(animals);
            
            Console.WriteLine($"农场现在有{arrayList.Count}只动物");
            // 卖出所有动物
            arrayList.Clear();
            Console.WriteLine($"农场现在有{arrayList.Count}只动物");

            Console.ReadKey();

        }
    }

    public abstract class Animal
    {
        protected string name;
        public string Name { get; set; }
        public Animal() => name = "The animal no name";
        public Animal(string newName) => name = newName;
        public void Feed() => Console.WriteLine($"{name} has been feed");
        public void Show() => Console.WriteLine($"{name} has been feed");
    }
    public class Cow : Animal
    {
        public Cow(string newName) : base(newName){
            Console.WriteLine($"你生产了一头牛:{name}");
        }
        public void MakeMilk()
        {
            Console.WriteLine($"奶牛{name}产了一升奶");
        }
        ~Cow()
        {
            Console.WriteLine($"你把牛{name}卖了");
        }
    }
    public class Chicken : Animal
    {
        public Chicken(string newName) : base(newName)
        {
            Console.WriteLine($"你生产了一只鸡{name}");
        }
        public void MakeEgg()
        {
            Console.WriteLine($"鸡{name}下了一个蛋");
        }
        ~Chicken()
        {
            Console.WriteLine($"你把鸡{name}卖了");
        }
    }
}

执行结果

你生产了一只鸡SuSan
你生产了一头牛:John
抓到一只动物,动物是learn_collection.Chicken
抓到一只动物,动物是learn_collection.Chicken
鸡SuSan下了一个蛋
抓到一只动物,动物是learn_collection.Cow
抓到一只动物,动物是learn_collection.Cow
奶牛John产了一升奶
农场现在有0只动物
你生产了一头牛:Hello
你生产了一只鸡World
农场现在有2只动物
农场现在有0只动物

标签:Console,name,C#,arrayList,动物,WriteLine,集合,public
From: https://www.cnblogs.com/yingyingdeyueer/p/17063418.html

相关文章

  • scoop 安装
    Powershell7安装的,普通用户和管理员安装路径不同,普通用户是默认安装在自己的路径下的,我的是win10用户目录Lenovo下。可以用来安装一些linux或者mac下好的应用,很方便。Set......
  • 安卓-RecyclerView
    RecyclerView是ListView的升级版,与ListView相比使用更方便效率更高这里直接借鉴Android群英传的例子来进行说明一、使用RecyclerView.Adapter进行管理RecyclerView的view......
  • vscode 使用 ts-node 调试当前文件
    launch.json内configurations添加如下内容{ "name":"当前ts文件", "type":"node", "request":"launch", "program":"${workspaceRoot}/node_modules/ts-node......
  • Qt6.4.2 QSoundEffect 在 ubuntu22.04 下的不好用
    本着跟踪技术潮流和尝鲜精神,一直尽量让自己机器安装最新环境,还要经常保持升级。ubuntu版本是22.04,Qt是6.4.2。最近对morse码很感兴趣,想学习找不到合适工具,所以就用Qt6写一......
  • Codeforces Round #803 (Div. 2)
    题目链接A水题//Problem:A.XORMixup//Contest:Codeforces-CodeforcesRound#803(Div.2)//URL:https://codeforces.com/contest/1698/problem/A?mobile=t......
  • cratedb 支持游标了
    好久没太关注cratedb了,就在最近看了下发现支持游标了,还是很强大的,值得体验试用下,以前我在尝试集成cratedb与hasura的时候发现了一些问题,从目前的一些特殊,似乎是可以尝试......
  • stencil的简单使用
    这边给unlit(不发光)shader加上stencil功能Unlit_Stencil.shader,其中stencil相关的用//-----包起来了Shader"My/Unlit_Stencil"{Properties{_Mai......
  • mt_Day5:static与继承
    static静态关键字1.static成员变量static+成员变量:该变量在内存中只存储一份,可以被共享访问、修改。静态成员变量的访问publicclassUser{/***例子:......
  • JDBC学习笔记
    1.JDBC的基本概念  1.1 JDBC是什么   JDBC(JavaDataBaseConnectivityJava数据库连接),可以理解为是一种用于执行SQL语句的API。  1.2JDBC的本质  ......
  • MongoDB cmd CRUD操作 对照SQL
    问题​​参考官方文档​​使用MogoDB你就要熟悉他的常用cmd命令,增删改查,聚合多表查询等基本操作,本片博客旨在教会大家快速上手MogoDB,对其有基本了解,会对照Oracle的SQL查询......