c# - Kotlin "apply"在 C# 中等效

标签 c# kotlin

使用 Kotlin 时,可以使用 apply 来设置现有对象的多个属性并保持代码更简洁,例如,而不是:

person.firstName = "John"
person.lastName = "Doe"
person.phone = "123 456 789"

我们可以用:
person.apply {
   firstName = "John"
   lastName = "Doe"
   phone = "123 456 789"
}

是否有等效于 C# 中的 apply

最接近的是 using 但据我所知,它不能以这种方式使用。

编辑:我知道 C# 中的对象初始值设定项,但我实际上正在寻找可以为现有对象(例如从数据库中获取的对象)完成的事情。

最佳答案

试试这个.... https://dev.to/amay077/kotlins-scope-functions-in-c-pbn

为方便起见,下面粘贴了代码,但上面的链接是源...

static class ObjectExtensions 
{
  // Kotlin: fun <T, R> T.let(block: (T) -> R): R
  public static R Let<T, R>(this T self, Func<T, R> block) 
  {
    return block(self);
  }

  // Kotlin: fun <T> T.also(block: (T) -> Unit): T
  public static T Also<T>(this T self, Action<T> block)
  {
    block(self);
    return self;
  }   
}

可以这样使用......
var model = new MyModel().Also(m => {
  m.Initialize();
  m.Load(path);
});

关于c# - Kotlin "apply"在 C# 中等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686675/

相关文章:

c# - ASP.NET、JQuery - 共享正则表达式

c# - 在 lambda 表达式中使用 Action() 数组

java - 使用 Spring MVC 和 Kotlin,为什么这个 Body 被忽略?

android - navController 未更新 Jetpack Compose 中的位置

c# - 了解 C# 中的 Async 和 Await

c# - 如何在特定属性上使用 Distinct 并根据谓词选择要保留的对象?

c# - 如何使用 LINQ 在 string[] 中查找最长的字符串

generics - 我可以使用泛型来利用密封类的优势吗?

javadoc - Kotlin 生成评论文档

kotlin - @Around 方面和 Kotlin 挂起函数