IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> C#基础知识+代码(四) -> 正文阅读

[开发工具]C#基础知识+代码(四)

1.显式接口的应用
2.案例:停车场收费管理平台
3.结构(struct)与类的比较
4.运算符重载
5.索引器

显示接口:

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

namespace ConsoleApplication1
{
    interface IChinese
    {
        void Speak( );
    }
    interface IUSA
    {
        void Speak( );
    }
}

继承接口类:

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

namespace ConsoleApplication1
{
    class Person: IChinese,IUSA
    {
        public void Speak( )
        {
            Console.WriteLine( "#@$%*.....");
        }
        void IChinese.Speak( )//显示接口不能加访问修饰符
        {
            Console.WriteLine( "你好,世界...." );
        }
        void IUSA.Speak( )
        {
            Console.WriteLine( "Hello,world...." );
        }
    }
}

主程序调用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main( string[ ] args )
        {           
            Person p = new Person( );
	          p.Speak( );
            IChinese ic = new Person( );//调用显示接口
            ic.Speak( );
            IUSA iu = new Person( );
            iu.Speak( );           
        }
    }
}

请添加图片描述

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

namespace ConsoleApplication1
{
    public enum Brand
    { 
        奔驰,
        玛莎拉蒂,
        保时捷,
        金牛,
        金杯
    }
    public abstract class Vehicle
    {
        public string No { get; set; }
        public Brand VBrand { get; set; }
        public int Price { get; set; }//收费
        public DateTime InTime { get; set; }//进场时间

        public Vehicle( string no , Brand brand , int price , DateTime intime )//有参构造函数
        {
            this.No = no;
            this.VBrand = brand;
            this.Price = price;
            this.InTime = intime;
        }

        public Vehicle( )
        {

        }
    }

    public class Car : Vehicle
    {
        public double Oil { get; set; }//油耗量

        public Car( ):base()//调用父类无参构造函数
        {
        }

        public Car( string no , Brand brand , int price , DateTime intime , double oil )
            :base(no,brand,price,intime)//调用父类有参构造函数
        {
            this.Oil = oil;
        }

        //运算符重载(必须为公有静态方法),实现两个轿车对象的价格求和
        public static int operator +( Car c1 , Car c2 )
        {
            return c1.Price + c2.Price;  
        }

        //运算符重载,实现两个轿车对象的价格求差
        public static int operator -( Car c1 , Car c2)
        {
            return c1.Price - c2.Price;
        }
    }

    public class Bus : Vehicle
    {
        public int Count { get; set; }//载客量
        public Bus( )
        {
        }
        public Bus( string no , Brand brand , int price , DateTime intime , int count )
            : base( no , brand , price , intime )
        {
            this.Count = count;
        }
    }


    public class Park  //停车场类
    {
        private Vehicle[ ] vehicles = null;//车辆数组

        public Park( int length )
        {
            vehicles = new Vehicle[ length ];
        }
        //车辆进场
        public string InPark( Vehicle v )
        {
            string info = "很遗憾,车位已满,欢迎下次光临";
            
            for ( int i = 0; i < vehicles.Length; i++ )
            {
                if ( this.vehicles[i] == null )//有空位
                {
                    v.InTime = DateTime.Now; //进场时间
                    this.vehicles[ i ] = v;//车辆保存在数组中
                    info = string.Format( "你的车牌号({0})车辆已经在第{1}个车位" , v.No , ( i + 1 ) );
                    break;
                }
            }
            return info;
        }

        public Vehicle GetVehicle( string no )//根据车牌号查询车辆
        {
            Vehicle v = null;
            foreach ( var vehicle in vehicles )
            {
                if ( vehicle != null ) //确保数组元素不为空
                {
                     if ( vehicle.No.Equals(no))
                    {
                        v = vehicle;
                        break;
                    }
                }
            }

            return v;
        }
    
        //统计停车场的各种车辆数据
        public string GetInfo( )
        {
            string info = "";
            int count_car = 0;//轿车
            int count_bus = 0;//大巴
            int count_null = 0;//空位统计
            
            // object is class
            foreach ( Vehicle vv in this.vehicles )
            {
                if ( vv != null )
                {
                    if ( vv is Car )//is用法,判断对象vv是否属于Car类,是返回True,否则False
                    {
                        count_car++;
                    }
                    if ( vv is Bus )
                    {
                        count_bus++;
                    }
                }
                else
                {
                    count_null++;
                }
            }

            info = string.Format( "当前一共有{0}辆轿车\n有{1}辆公交车\n还有{2}个空位" , count_car , count_bus , count_null );

            return info;
        }

        //出场
        public string OutPark( Vehicle v )
        {
            string info = "";
            long money = ( DateTime.Now.Ticks - v.InTime.Ticks ) * v.Price;
            info = "您的车辆需要缴纳" + money + "元";
            for ( int i = 0; i < this.vehicles.Length; i++ )
            {
                if ( this.vehicles[ i ] != null )
                {
                    if ( vehicles[ i ].No.Equals( v.No ) )
                    {
                        this.vehicles[ i ] = null;//车位置空
                    }
                }
            }
            return info;
        }
    }
}

主程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main( string[ ] args )
        {          
            // 停车场系统
            Car c1 = new Car( "鄂A 888888" , Brand.玛莎拉蒂 , 10 , DateTime.Now , 2.5 );
            Bus b1 = new Bus( "鄂A 666666" , Brand.金杯 , 20 , DateTime.Now,30 );
            Bus b2 = new Bus( "鄂A 686868" , Brand.金牛 , 20 , DateTime.Now , 30 );
            Park park = new Park( 5 );
            
            Console.WriteLine( park.InPark( c1 ) );
            Console.WriteLine( park.InPark( b1 ) );
            Console.WriteLine( park.InPark( b2 ) );
            for ( int i = 0; i < 100000; i++ )//产生一些时间间隔然后执行操作
            {

            }
            Vehicle v = park.GetVehicle( "鄂A 888888" );
            if ( v !=null )
            {
                Console.WriteLine( v.VBrand );
            }

            string info = park.GetInfo( );

            info = park.OutPark( b2 );//出场
            Console.WriteLine( info );            
        }
    }
}

请添加图片描述类:引用类型

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

namespace ConsoleApplication1
{
    public  struct PC
    {       
        private int aa;//结构字段不能定义时直接初始化

        public PC(int bb)//结构不能定义无参的构造函数
        {
            this.aa = bb;
        }
    }
    
}

请添加图片描述运算符重载详细见以上主程序代码👆
索引器用的不多

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2022-05-19 12:01:55  更:2022-05-19 12:02:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:35:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码