元ネタは私のGitHub。
やり方
1. C#側の引数にref
をつける
public static LibFS.TpReduceRet Reduce( ref LibFS.TpReducePack1 rP1, ref LibFS.TpReducePack2 rP2, LibFS.TpAxle axles) {
2. F#側の、渡す変数をmutable
にする
let mutable redpk1 : LibFS.TpReducePack1 = {axle = axlepk; bLow = bLow; bUpp = bUpp; adjmat = {adj = adjmat};} let mutable redpk2 : LibFS.TpReducePack2 = {edgelist = {edg = edgelist}; used = used; image = {ver = image}; redquestions = graphs}
3. F#側の、渡す変数の型をbyref<myRecord>
にする
4. F#からC#に渡すところで&
をつける
let reduce (rP1 : byref<LibFS.TpReducePack1>) (rP2 : byref<LibFS.TpReducePack2>) (axles : LibFS.TpAxle) : LibFS.TpReduceRet = LibDischargeReduce.Reduce(&rP1, &rP2, axles)