#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] ;