在我的 OverloadedIndexer 类中,我有一个名为 stringData 的私有数组字段,其大小在类构造函数中设置。我想创建一个带有可选参数的索引器。它的默认值应该是该数组中的项目数。
不幸的是,这篇文章底部的代码行引发了以下编译时错误:
非静态字段,方法或属性'OverloadedIndexer.stringData'
需要对象引用public string this[string data, int maxOccurences = stringData.Length]
有没有办法让它发挥作用?
答案 0 :(得分:3)
默认值必须是常量 - 您不能提供依赖于另一个变量的值。所以这没关系:
public string this[string data, int maxOccurences = 0]
但你得到的是无效的。不可否认,您收到的错误消息的原因略有不同,但即使您可以解决这个问题,也会遇到常量问题。
答案 1 :(得分:2)
请参阅msdn Named and Optional Arguments
每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送参数,则使用默认值。默认值必须是以下类型的表达式之一: