You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForm中数组作为函数参数传递失败及报错的解决方法咨询

解决WinForm中数组作为函数参数传递的报错问题

嘿,我一眼就揪出问题所在啦——你调用foobar的时候,错把数组初始化的语法写成匿名类型的写法了!编译器看到new {1,2,3},会默认认为你要创建一个匿名类型,但匿名类型的成员必须是带赋值、简单名称或者成员访问的形式,这才抛出了那个"Invalid anonymous type member declarator"的错误。

下面直接给你正确的解决方法:

  • 使用标准的数组初始化语法
    创建数组时,要明确指定数组类型(或者用隐式类型让编译器自动推断),语法是new 类型[] {元素列表},或者简化的new[] {元素列表}(仅当元素类型统一时可用):

    • 错误写法:new {1, 2, 3}
    • 正确写法:new int[] {1, 2, 3} 或 new[] {1, 2, 3}
    • 字符串数组同理:new string[] {"a", "b", "c"} 或 new[] {"a", "b", "c"}
  • 完整的正确调用示例

    // 你的函数定义本身没有问题
    void foobar(int[] foo, string[] bar) { }
    
    // 正确的调用方式
    foobar(new int[] {1, 2, 3}, new string[] {"a", "b", "c"});
    
    // 用隐式类型数组更简洁(C#3.0+支持)
    foobar(new[] {1, 2, 3}, new[] {"a", "b", "c"});
    
  • 小补充
    如果你用的是C#3.0及以上版本,隐式类型数组new[]完全可以正常工作,编译器会根据你传入的元素自动推断数组类型,写起来更省心。

内容的提问来源于stack exchange,提问作者Ubaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:56:51