为了账号安全,请及时绑定邮箱和手机立即绑定

关于打印log的一些疑问

代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace MorningExercise0920_Interface

{

    class Program

    {

        static void Main(string[] args)

        {

            WrapFactory wrapProduct = new WrapFactory();

            Logger logger = new Logger();

            IProductFactory pizze = new PizzeFactory();

            IProductFactory ToyCar = new ToyCarFactory();


            Action<Product> log = new Action<Product>(logger.Log);


            Box box1 = wrapProduct.WrapProduct(pizze, log);

            Box box2 = wrapProduct.WrapProduct(ToyCar, log);


            Console.WriteLine(box1.Product.Name);

            Console.WriteLine(box2.Product.Name);

        }

    }


    interface IProductFactory

    {

        Product Make();

    }

    class PizzeFactory : IProductFactory

    {

        public Product Make()

        {

            Product product = new Product();

            product.Name = "Pizze";

            product.Price = 78;

            return product;

        }

    }

    class ToyCarFactory : IProductFactory

    {

        public Product Make()

        {

            Product product = new Product();

            product.Name = "ToyCar";

            product.Price = 208;

            return product;

        }

    }


    class Logger

    {

        public void Log(Product product)

        {

            Console.WriteLine("TimeNow {0}\nProduct {1}\nPrice {2}", DateTime.Now, product.Name, product.Price);

            Console.WriteLine("**************************************************************");

        }

    }


    class Product

    {

        public string Name { get; set; }

        public double Price { get; set; }

    }

    class Box

    {

        public Product Product { get; set; }

    }

    class WrapFactory

    {

        public Box WrapProduct(IProductFactory ipProductor, Action<Product> logCallback)

        {

            Box box1 = new Box();

            box1.Product = ipProductor.Make();

            if (box1.Product.Price >= 1)

            {

                logCallback(box1.Product);

            }

            return box1;

        }

    }

}

https://img1.sycdn.imooc.com//5ba304200001960807850310.jpg

我把2放在1前面debug就崩溃了,但是按照现在的1,2顺序debug就能打印出log,请问下各位大神这是怎么回事呢?新手求解

正在回答

1 回答

2放在1前面获取不到Price

0 回复 有任何疑惑可以回复我~
#1

星辰的泪 提问者

请问下为什么会获取不到Price呢?
2018-10-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C#面向对象编程
  • 参与学习       68612    人
  • 解答问题       153    个

本系列教程主要是,带你学习C#面向对象编程的编程思想、编程技巧

进入课程

关于打印log的一些疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信