c# - 如何更改作为参数传递的对象属性?
问题描述
我想将一个对象传递给一个方法,但是在此期间我想更改所述对象的属性。我现在的做法是这样的:
MyClass someClass= someClasses.FirstOrDefault(s => s.Propert1. == "1");
someClass.Property1 = 2;
MyMethod(someClass);
但是我不想做创建变量然后设置属性的额外步骤。
MyMethod(someClasses.FirstOrDefault(s => s.Propert1. == "1")/*.ChangeProperty()?*/); //This is where I would like to change Property1's value.
如果可能的话,这是一种好的做法吗?
解决方案
我看不出有任何理由在一行中执行此操作。这段代码看起来非常好:
MyClass someClass= someClasses.FirstOrDefault(s => s.Propert1. == "1");
someClass.Property1 = 2;
MyMethod(someClass);
如果需要,您可以添加一个扩展方法来执行此操作:
// put this in a static class
static T WithNewPropertyValue<T>(this T t, Action<T> action) where T : class
{
action(t);
return t;
}
像这样称呼它
MyMethod(someClasses.FirstOrDefault(s => s.Propert1 == "1").WithNewPropertyValue(x => x.Propert1 = "2"));
但我觉得这会降低代码的可读性。
推荐阅读
- excel - 在不同的工作簿中运行特定的宏
- google-cloud-monitoring - 删除并重新安装/更新 stackdriver-agent
- asp.net-mvc - SignalR 与反应本机应用程序和 c# 网站
- ios - 如何添加第三方 SDK(多个 .framework 文件)来响应原生库模块?
- linux - 为什么我不能从主目录执行 Couchbase 的查询程序 cbq?
- html - 我的 Angular 标签输入 matInput 不起作用
- amazon-web-services - 带有 bitbucket 的 AWS Codepipeline 以及如何将分支名称传递给 appspec.yaml
- javascript - 如何发生点击功能不是div而是按钮
- javascript - Firestore 查询函数结果无效
- java - 对如何在 Java 中使用数组中的索引和值感到困惑