c#学习笔记day4

一、接口

接口定义了所有继承它的类都需要遵循的契约。

解释:接口定义了“一个类应当怎样”,而继承它的类则定义了“如何将它实现”。

优势:多继承能力(一条鱼可以是捕食者也可以是被捕食者);必须实现所有类,便于实现框架集成。

如下代码中,老鹰是捕食者,继承IPredator(一般传统命名规则,实现接口的类加I);

兔子是被捕食者,继承IPrey;一条鱼可以是捕食者也可以是被捕食者,继承IPredator,IPrey

using System;
using System.Net.Http.Headers;
namespace MyFirstApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Rabbit rabbit = new Rabbit();
            Hawk hawk = new Hawk();
            Fish fish = new Fish();

            rabbit.Flee();//兔子是被捕食者

            hawk.Hunt();//老鹰是捕食者

            fish.Hunt();//鱼既是捕食者又是被捕食者
            fish.Flee();

        }
    }
    interface IPrey
    {
        public void Flee();
    }
    interface IPredator
    {
        public void Hunt();
    }
    class Hawk : IPredator
    {
        public void Hunt()
        {
            Console.WriteLine("the hawk is searching for food!");
        }
    }
    class Rabbit : IPrey
    {
        public void Flee()
        {
            Console.WriteLine("the rabbit runs away!");
        }
    }
    class Fish : IPrey, IPredator
    {
        public void Hunt()
        {
            Console.WriteLine("the fish is searching for smaller food!");
        }
        public void Flee()
        {
            Console.WriteLine("the fish swims away!");
        }
    }
}

二、列表List

1、与普通的数组相似,List可以表示一个对象的列表,通过索引(index)可以访问,不同的是List可以动态增加或者减少数量,缺点是更消耗内存。

2、方法包括Add,Insert,Remove等,用之前要先声明实例再用,如"实例.add();" 。

3、List在System.Collections.Generic下,用之前要注意using这个库。

using System;
using System.Collections.Generic;
namespace MyFirstApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<String> food = new List<string>();

            food.Add("Hamburger");
            food.Add("Pizza");
            food.Add("Hotdog");
            food.Add("Fries");
            Console.WriteLine(food[0]);
            Console.WriteLine("-------------------");
            foreach(String item in food)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("--------------------");
            food.Remove("Fries");
            food.Insert(0, "sushi");
            food.Insert(2, "sushi");
            foreach (String item in food)//输出列表
            {
                Console.WriteLine(item);
            }
            Console.WriteLine(food.Count);
            Console.WriteLine(food.IndexOf("sushi"));
            Console.WriteLine(food.LastIndexOf("sushi"));
            Console.WriteLine(food.Contains("Fries"));
            food.Sort();//根据字母表顺序排序
            food.Reverse();//倒序
            Console.WriteLine("-----------------");
            String[] foodArray = food.ToArray();//变为数组
            foreach(String item in foodArray)//输出数组
            {
                Console.WriteLine(item);
            }

        }
    }

}

输出:

Hamburger
-------------------
Hamburger
Pizza
Hotdog
Fries
--------------------
sushi
Hamburger
sushi
Pizza
Hotdog
5
0
2
False
-----------------
sushi
sushi
Pizza
Hotdog
Hamburger

三、对象的列表List<object>

using System;
using System.Collections.Generic;
namespace MyFirstApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Player> players = new List<Player>();

            /*
            Player player1 = new Player("John");
            Player player2 = new Player("Steve");
            Player player3 = new Player("Karen");
            players.Add(player1);
            players.Add(player2);
            players.Add(player3);
            */
            players.Add(new Player("John"));
            players.Add(new Player("Steve"));
            players.Add(new Player("Karen"));
            //效果同上,类似数组,不需要再实例化每个Player
            foreach (Player player in players)
            {
                Console.WriteLine(player.ToString());
            }
        }
        class Player
        {
            public String name;
            public Player(String name) 
            { 
                this.name = name;
            }
            public override string ToString()
            {
                return name;
            }
        }
    }

}

输出:

John
Steve
Karen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值