您只能在 C# 中的固定语句初始值设定项错误中获取未固定表达式的地址
Posted
技术标签:
【中文标题】您只能在 C# 中的固定语句初始值设定项错误中获取未固定表达式的地址【英文标题】:You can only take address of an unfixed expression inside of a fixed statement initializer error in c# 【发布时间】:2021-09-03 19:24:20 【问题描述】:我使用 .NET Reflector 对项目进行了逆向工程,一切都很好,而不是这个错误,我不知道如何解决它,请指导我提前致谢。这是代码。
CS0212 您只能在固定语句初始值设定项中获取未固定表达式的地址
if (flag6 && !double.IsNaN(doubleValue))
double* numPtr1 = &this._MeasData[index].MeasValSum;//Error(You can only take address of an unfixed expression inside of a fixed statement initializer)
numPtr1[0] += doubleValue;
int* numPtr2 = &this._MeasData[index].MeasValNoOfValues; //Error(You can only take address of an unfixed expression inside of a fixed statement initializer)
numPtr2[0]++;
而 _MeasData 结构是
[StructLayout(LayoutKind.Sequential)]
private struct MeasChData
public MeasureInfo MeasInfo;
public int MeasChNumber;
public RollingPointPairList MeasureSamples;
public LineItem MeasuredValueLine;
public double MeasValSum;
public int MeasValNoOfValues;
public double MeasValLabel;
public double CurrentYMin;
public double CurrentYMax;
我尝试强制转换,但未能解决此错误。 我英语不好。所以忽略如果...... 谢谢
【问题讨论】:
【参考方案1】:我已经这样解决了问题
fixed(double* numPtr1 = &this._MeasData[index].MeasValSum)
numPtr1[0] +=doubleValue;
fixed( int* numPtr2 = &this._MeasData[index].MeasValNoOfValues)
numPtr2[0]++;
【讨论】:
以上是关于您只能在 C# 中的固定语句初始值设定项错误中获取未固定表达式的地址的主要内容,如果未能解决你的问题,请参考以下文章