Gear.Turbo

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();
        }
    }
复制代码

 

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

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

posted on   lsp  阅读(196)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 本地部署 DeepSeek:小白也能轻松搞定!
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

导航

统计信息

点击右上角即可分享
微信分享提示