2011-09-15 5 views
0

다음 코드는 CodeDom에서 생성됩니다. 목표 프레임 워크를 .net 4.0으로 설정하면 오류나 경고없이 잘 작동합니다. 나는 2.0 .NET으로 대상 프레임 워크를 설정하면, 다음과 같은 오류 얻을 :.net 2.0 원인 : 'New type requires()'- .net 2.0에서만 발생합니다.

CS1526: A new expression requires() or [] after type

test soVar; 
soVar = new test { foo = 0x10007 }; // Error occurs on this line 

    [StructLayout(LayoutKind.Sequential)] 
    struct test 
    { 
     public uint foo; 
    } 

여기에 무슨됩니다?! 왜 .net 2.0으로 갑자기 전환하면 오류가 발생합니까?

여기에서 아이디어를 기대하십시오.

감사, 2.0 개체 이니셜 라이저를 지원하지 않는 .NET

+0

가능한 복제본 http://stackoverflow.com/questions/3909244/c-error-a-new-expression-requires-or-after-type –

+0

중복되지 않습니다. 이미 질문을 읽었습니다. –

+0

좀 더 구체적으로 기재 할 수 있습니까? ".net 2.0"이라고 말하면 C# 2.0을 의미합니까? C# 3.0은 .net 2.0에서 실행되며 C# 3 기능을 사용하고 있습니다. –

답변

6
test soVar; 
soVar = new test { foo = 0x10007 }; // Error occurs on this line 

에반. 해야 할 것입니다.

test soVar; 
soVar = new test(); 
soVar.foo = 0x10007; 
+2

.net 2.0은 C# 3이 .net 2.0을 기반으로하므로 이니셜 라이저를 지원합니다. 이것은 C# 2 대 C# 3 문제입니다. –

+0

@Mystere 나는 당신이 옳다고 생각한다. –

0

Visual Studio 2010을 실행 중이고 설명하는 문제가 발생하지 않습니다.

나는 대상으로 닷넷 프레임 워크 2.0와 프로젝트를 생성하고,이 프로그램을 컴파일 :
using System.Runtime.InteropServices; 

namespace ConsoleApplication1 
{ 
    [StructLayout(LayoutKind.Sequential)] 
    struct test 
    { 
     public uint foo; 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      test soVar; 
      soVar = new test { foo = 0x10007 }; 
     } 
    } 
} 

은 어쩌면 당신은 어떻게 든 (예 : 비주얼 스튜디오 2005) 를 C# 2.0 을하지 사용하고 있습니다. Net 2.0?

이 문제를 해결하려면 Bala의 솔루션을 사용하십시오 (개체 초기화 프로그램을 사용하지 마십시오).

+0

나는 여기서 중요한 일을하고 있다고 생각합니다. 우리는 어떻게 든 채팅 할 수 있습니까? –

+0

http://chat.stackoverflow.com/rooms/3470/c-2-0-initializers –