.net 2.0 导致错误:'新类型需要 () ' - 仅发生在 .net 2.0 中

发布于 2024-12-04 10:03:59 字数 441 浏览 1 评论 0原文

以下代码是在 CodeDom 中生成的。当我将目标框架设置为 .net 4.0 时,它工作正常 - 没有错误或警告。当我将目标框架设置为.net 2.0时,出现以下错误:

CS1526:新表达式需要在类型后添加 () 或 []

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

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

这是怎么回事?!为什么突然切换到 .net 2.0 会引发错误?

期待在这里提出任何想法。

谢谢,

埃文

The following code is being produced in CodeDom. When I set the target framework to .net 4.0 it works fine - no errors or warnings. When I set the target framework to .net 2.0, I get the following error:

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;
    }

What is going on here?! Why would switching to .net 2.0 all of the sudden raise an error?

Look forward to any ideas here.

Thanks,

Evan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

她比我温柔 2024-12-11 10:04:00
test soVar;
soVar = new test { foo = 0x10007 }; // Error occurs on this line

.net 2.0 不支持对象初始值设定项。必须这样做

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

.net 2.0 does not support object initializers. it will have to do

test soVar;
soVar = new test(); 
soVar.foo = 0x10007;
少女七分熟 2024-12-11 10:04:00

我正在运行 Visual Studio 2010,并且没有遇到您所描述的问题。

我创建了一个以.Net Framework 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 };
        }
    }
}

也许您以某种方式使用C# 2.0(例如Visual Studio 2005),而不是 .Net 2.0?

要解决此问题,请使用 Bala 的解决方案(不要使用对象初始值设定项)。

I am running Visual Studio 2010, and do not experience the problem you describe.

I created a project with .Net Framework 2.0 as the target, and this program compiles:

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 };
        }
    }
}

Maybe you are somehow using C# 2.0 (e.g. Visual Studio 2005), not .Net 2.0?

To solve this problem, use Bala's solution (don't use object initializers).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文