我有不可变的 F1 类。我想改变它的一个领域。在 set 方法中,我必须返回 F1 类的新实例并进行更改。我不明白我怎么能做到这一点。
public class F1
{
public readonly int k1;
public readonly ImmutableList<int> k2;
public F1(int k)
{
...
}
public int GetItem(int pos)
{
return k2[pos];
}
public F1 SetItem(int pos, int val)
{
return new F1() // How i can create new instance with changes in pos
}
}
String.cs 中有 Replace 方法。String 是 C# 中的不可变类(或者我认为是这样)。替换方法定义如下:
[SecuritySafeCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private string ReplaceInternal(char oldChar, char newChar);
[__DynamicallyInvokable]
public string Replace(char oldChar, char newChar)
{
return this.ReplaceInternal(oldChar, newChar);
}
所以我不知道 ReplaceInternal 是如何工作的,然后找不到我的问题的答案。