2017-02-08 1 views
0

경고! 미안하지만, 나 영어가 안좋아! 구조체에 고정 된 배열을 사용 :.NET C# 안전하지 않거나 고정 된 CS1666 다른 배열의 요소에 대한 포인터 배열로 작업

[StructLayout(LayoutKind.Explicit, Size = 12)] 
public unsafe struct union_reg 
{ 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)] 
    [FieldOffset(0)] 
    public fixed byte r[12]; 

    [FieldOffset(0)] 
    public fixed UInt16 rp[6]; 
} 

만들 시도하고 포인터의 배열을 통해 요소에 액세스 할 수 있습니다 :

나는 기능, 모든 벌금을 declarete, 그러나 나는 시도하는 경우를 declarete 경우
union_reg reg = new union_reg(); 
byte*[] r = new byte*[9] { &reg.r[rB], &reg.r[rC], &reg.r[rD], &reg.r[rE], &reg.r[rH], &reg.r[rL], &rhl, &reg.r[rA], &reg.r[6] }; 

수업에서 CS1666 오류가 발생합니다. 문제를 해결하는 데 도움주세요!

const byte rB = 1; 
const byte rC = 0; 
const byte rD = 3; 
const byte rE = 2; 
const byte rH = 5; 
const byte rL = 4; 
const byte rA = 7; 
const byte rF = 6;` 
+1

왜 그런 음모를 꾸미고 있습니까? –

+0

빠른 algorythm을 만드십시오. 오래된 CPU를 에뮬레이트합니다. –

+0

C#에서 물건을 빠르게 만들기 위해'unsafe'와'struct's를 사용할 필요가 없습니다. –

답변

0

이 오류는 msdn here에서 분명히 설명됩니다.

고정되지 않은 클래스 내에서 고정 유형을 입력란/속성으로 사용할 수 없습니다.

+0

나는 그것을 시도하지만 같은 오류가 발생합니다. 'fixed (byte * b = & reg.r [rB]) {}' –

+1

아마도 당신이 당신이 원하는 것을 우리에게 말해 준다면 우리는 당신에게 더 나은 대답을 줄 수있을 것입니다. –

관련 문제