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
相关产品推荐
相关产品推荐

