首页 > 解决方案 > Kotlin 在 C# 中“应用”等价物

问题描述

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

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

我们可以用:

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

是否有与applyC# 中的等价物?

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

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

标签: c#kotlin

解决方案


试试这个.... 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);
});

推荐阅读