C#面试题

记录一道面试题:

猫叫了,老鼠逃跑了,主人醒了。

复制代码
public class Program
    {
        public delegate void CryHandler(object sender, CryArgs e);

        public class CryArgs
        {
            /// <summary>
            /// 声音内容
            /// </summary>
            public string Voice { get; set; }

            /// <summary>
            /// 声音强度
            /// </summary>
            public string VoiceLevel { get; set; }
        }

        /// <summary>
        /// 事物基类
        /// </summary>
        public abstract class AnyOne
        {
            /// <summary>
            ////// </summary>
            public abstract void Hear(object sender, CryArgs e);

            /// <summary>
            /// 名字
            /// </summary>
            public string Name { get; set; }
        }

        /// <summary>
        /// 主人
        /// </summary>
        public class Master : AnyOne
        {
            public Master()
            {
                base.Name = "主人";
            }

            /// <summary>
            ////// </summary>
            public override void Hear(object sender, CryArgs e)
            {
                Awake(e);
            }

            /// <summary>
            ////// </summary>
            private void Awake(CryArgs e)
            {
                Console.WriteLine(string.Format("{0}听到猫{2}地叫\"{1}\",被惊醒了!", base.Name, e.Voice, e.VoiceLevel));
            }
        }

        /// <summary>
        /// 老鼠
        /// </summary>
        public class Mouse : AnyOne
        {
            public Mouse()
            {
                base.Name = "老鼠";
            }

            /// <summary>
            ////// </summary>
            public override void Hear(object sender, CryArgs e)
            {
                RunAway(e);
            }

            /// <summary>
            ////// </summary>
            private void RunAway(CryArgs e)
            {
                Console.WriteLine(string.Format("{0}听到猫{2}地叫\"{1}\",被吓跑了!", base.Name, e.Voice, e.VoiceLevel));
            }
        }

        /// <summary>
        ////// </summary>
        public class Cat
        {
            private CryArgs cryArgs;
            public event CryHandler OnCry;

            public Cat()
            {
                cryArgs = new CryArgs();
            }

            /// <summary>
            ////// </summary>
            public virtual void Cry(string voice, string voiceLevel)
            {
                cryArgs.Voice = voice;
                cryArgs.VoiceLevel = voiceLevel;
                Console.WriteLine(string.Format("猫{0}地叫了一声:{1}!", voiceLevel, voice));
                if (OnCry != null)
                {
                    OnCry(this, cryArgs);
                }
            }
        }

        public static void Main(string[] args)
        {
            Cat cat = new Cat();
            Master master = new Master();
            Mouse mouse = new Mouse();

            cat.OnCry += master.Hear;
            cat.OnCry += mouse.Hear;

            cat.Cry("眯眯眯", "大声");

            Console.ReadLine();
        }
    }
复制代码

 

posted @   小八路  阅读(457)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示