相关疑难解决方法(0)

我们可以从c#访问F#复制和更新功能吗?

例如在F#中我们可以定义

type MyRecord = {
    X: int;
    Y: int;
    Z: int 
    }

let myRecord1 = { X = 1; Y = 2; Z = 3; }
Run Code Online (Sandbox Code Playgroud)

并且我可以做更新

let myRecord2 = { myRecord1 with Y = 100; Z = 2 }
Run Code Online (Sandbox Code Playgroud)

这很棒,而且记录自动实现IStructuralEquality而不需要额外的努力这一事实让我希望在C#中实现这一点.但是,也许我可以在F#中定义我的记录,但仍然可以在C#中执行一些更新.我想像一个API

MyRecord myRecord2 = myRecord
    .CopyAndUpdate(p=>p.Y, 10)
    .CopyAndUpdate(p=>p.Z, 2)
Run Code Online (Sandbox Code Playgroud)

有没有办法,我不介意脏黑客,如上所述实施CopyAndUpdate?CopyAndUpdate的C#签名将是

T CopyAndUpdate<T,P>
   ( this T
   , Expression<Func<T,P>> selector
   , P value
   )
Run Code Online (Sandbox Code Playgroud)

c# f# immutability

14
推荐指数
2
解决办法
817
查看次数

不可变类与不可变结构

我有一个开始生活可变的课程,但我已经让它变得一成不变.我应该改成它struct吗?选择一个而不是另一个需要考虑哪些因素?我的特殊情况是一个Point类型类(它代表一个自定义坐标系中的坐标),由4个int字段组成,加上一些属性以不同的方式访问相同的数据.我注意到这String是一个类并且是不可变的,因此必须有一些用例.

c# immutability

10
推荐指数
1
解决办法
1421
查看次数

标签 统计

c# ×2

immutability ×2

f# ×1