您只能在 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# 中的固定语句初始值设定项错误中获取未固定表达式的地址的主要内容,如果未能解决你的问题,请参考以下文章

类型初始值设定项引发异常。C# web

C#调用matlab时,类型初始值设定项引发异常

为啥 C# 3.0 对象初始值设定项构造函数括号是可选的?

C#使用NLOG System.TypeInitializationException,类型初始值设定项引发异常

C#变量初始化问题:字段初始值无法引用非静态字段方法或属性

[C#]变量初始化问题:字段初始值无法引用非静态字段方法或属性