Вы можете использовать адрес незафиксированного выражения только внутри ошибки инициализатора фиксированного оператора в c#

#c# #arrays #struct #implicit-conversion #unsafe-pointers

Вопрос:

Я провел реверс-инжиниринг проекта с использованием .NET Reflector, все в порядке, Вместо этой ошибки я не знаю, как ее решить, пожалуйста, направьте меня заранее, спасибо. Вот код.

CS0212 Вы можете использовать только адрес незафиксированного выражения внутри инициализатора фиксированного оператора

 if (flag6 amp;amp; !double.IsNaN(doubleValue))
{
  double* numPtr1 = amp;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 = amp;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 = amp;this._MeasData[index].MeasValSum)
numPtr1[0]  =doubleValue;
fixed( int* numPtr2 = amp;this._MeasData[index].MeasValNoOfValues)
numPtr2[0]  ;