C#中能否用对象初始化器调用集合方法?语法问题咨询
关于C# FolderPicker对象初始化器的语法问题解答
嘿,作为C#新手碰到这种语法问题太正常啦,别担心~你的代码报错主要是两个语法规则的问题,我来给你拆解清楚:
问题出在哪?
你尝试的写法有两个不符合C#对象初始化器规范的地方:
- 对象初始化器中,多个成员设置之间要用逗号分隔,而不是分号;
FileTypeFilter.Add("*")是方法调用,不能直接放在对象初始化器的大括号里——对象初始化器仅支持设置属性值,或者对集合类型成员使用集合初始化语法。
正确的写法
你可以用C#的集合初始化语法来处理FileTypeFilter,同时修正分隔符的问题,代码如下:
var folderPicker = new FolderPicker() { SuggestedStartLocation = PickerLocationId.Desktop, FileTypeFilter = { "*" } };
为什么这样写可行?
FileTypeFilter属于集合类型,{ "*" }这种集合初始化语法会被编译器自动转换成调用Add("*")方法,既符合对象初始化器的语法规则,又达到了你想要的效果。
如果还是习惯显式调用Add方法,那只能回到你最初的写法,或者初始化后单独调用:
var folderPicker = new FolderPicker() { SuggestedStartLocation = PickerLocationId.Desktop }; folderPicker.FileTypeFilter.Add("*");
内容的提问来源于stack exchange,提问作者master_ruko
相关产品推荐
相关产品推荐

