Tag: 动作

为什么Action / Func比.Net中的常规方法更好?

如果我需要快速可重复使用的代码,我更喜欢使用Action或Func,但是我团队中的其他人不喜欢它们或理解它们。 目前,我唯一真正的论点是偏好和更新的代码实践,但这些只是不好的论点。 为什么这样做更好: Action hideControl = (form,name) => { var button = form.GetControl(name); if (button != null) button.Visible = false; } 比: public static void HideControl(this FormView form, string name) where T : Control { var button = form.GetControl(name); if (button != null) button.Visible = false; } ? 任何人都可以给我具体的具体论据/例子吗?

Action / Func vs Methods,有什么意义?

我知道如何在.NET中使用Action和Func ,但每次我开始时,使用我调用的常规旧方法可以实现完全相同的解决方案。 当Action或Func被用作我无法控制的事物的参数时,这就排除了,比如LINQ的.Where 。 基本上我的问题是……为什么这些存在? 他们给了我什么额外的和新的一个简单的方法不?

循环操作列表

我无法理解如何遍历Action列表。 当我尝试它时,我最终得到的值与前一次迭代相同。 这是代码(简化示例): string[] strings = { “abc”, “def”, “ghi” }; var actions = new List(); foreach (string str in strings) actions.Add(new Action(() => { Trace.WriteLine(str); })); foreach (var action in actions) action(); 输出: ghi ghi ghi 为什么在执行操作时总是在strings选择最后一个元素? 我怎样才能实现所需的输出: abc def ghi

在ASP.NET MVC中使用重定向传递复杂对象?

嗨, 我有一个看起来像这样的动作: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Register(AdRegister adRegister, IEnumerable files) AdRegister是一个复杂的类,我需要将其传递给Register操作中的一个重定向方法,如下所示: return this.RedirectToAction(“Validate”, adRegister); Validate操作如下所示: public ActionResult Validate(AdRegister adRegister) 我知道我可以传递简单的参数但在这种情况下它是一个复杂的对象。 此示例不起作用,adRegister的属性将为null。 这是可能的,如果是这样,怎么样? 最好的祝福 更多信息:注册操作将采用adRegister并对其执行魔术,然后将其发送到Validate操作。 Validate操作将向用户返回validation页面。 当用户点击授权按钮时,将从表单中填充adRgister,然后将其发送到vValidatepost,并在其中保存。 我已经查看过暂时将adRegister放在缓存或数据库中,但如果我可以简单地将它传递给下一个操作,那就更好了。