zoukankan      html  css  js  c++  java
  • C# quiz – 我错在哪儿?

    在开发的时候我遇到了一个迷惑的问题,现在把问题简化一下放在这里。在开始之前,先介绍一下代码的用意 :文中示例及代码完全是为了简化说明问题而造的一个例子,本身没有什么实际意义,因此不必过分追究它的合理性。

    首先有一个MyObject的简单类,它有一个Name的属性;然后有一个Operation的类,它可以执行一个Action。我在主函数内创建了一个MyObject的List, 然后有循环它去生成一个Operation的List。 程序期望的结果是循环所有的Operation并执行它,应该打印每一个MyObject的Name。程序如下:

        //Example object.
        public class MyObject
        {
            
    public string Name { getprivate set; }
            
    public MyObject(string name)
            {
                Name 
    = name;
            }
        }

        
    //An operation class that can be executed.
        public class Operation
        {
            
    private Action _action;

            
    //Requires an action
            public Operation(Action action)
            {
                _action 
    = action;
            }
            
    public void Execute() //Executes the action
            {
                _action();
            }
        }

        
    public static void Main(String[] args)
        {
            
    // Instantiates a list of my objects.
            List<MyObject> myObjects = new List<MyObject> 
            {
                
    new MyObject("My object 1"),
                
    new MyObject("My object 2"),
                
    new MyObject("My object 3"
            };

            List
    <Operation> operators = new List<Operation>();

            
    //Loops all the objects and creates operations.
            foreach (var myObject in myObjects)
            {
                
    //Instantiates an operation that printing my object's name.
                Action action = () => { Console.WriteLine(myObject.Name); };
                operators.Add(
    new Operation(action));
            }

            
    //Executes all the operations.
            foreach (var operation in operators)
            {
                operation.Execute();
            }
        }

     

    运行,程序的结果显示如下:

    显然不是期望的结果。那么程序的错误在哪儿呢?

  • 相关阅读:
    OpenCV3 for python3 学习笔记1
    OpenCV3 for python3 学习笔记2
    python3 requests获取某网站折线图上数据
    python BeautifulSoup的简单使用
    Python爬虫之Cookie和Session(转载)
    python 获取前一天或前N天的日期
    python 进程池pool简单使用
    GitHub for Windows简单使用
    Windows上的git、github部署及基本使用方法
    python unknown error: DevToolsActivePort file doesn't exist 问题解决
  • 原文地址:https://www.cnblogs.com/lsp/p/1636798.html
Copyright © 2011-2022 走看看