C# 索引器中的可选参数-需要对象引用错误
在重载索引类中,我有一个名为stringData的私有数组字段,其大小在类构造函数中设置。我想创建一个带有可选参数的索引器。它的默认值应该是该数组中的项数 不幸的是,本文底部的代码行引发了以下编译时错误: 非静态字段、方法或属性“OverloadedIndex.stringData”需要对象引用。C# 索引器中的可选参数-需要对象引用错误,c#,optional-parameters,indexer,C#,Optional Parameters,Indexer,在重载索引类中,我有一个名为stringData的私有数组字段,其大小在类构造函数中设置。我想创建一个带有可选参数的索引器。它的默认值应该是该数组中的项数 不幸的是,本文底部的代码行引发了以下编译时错误: 非静态字段、方法或属性“OverloadedIndex.stringData”需要对象引用。 public string this[string data, int maxOccurences = stringData.Length] 是否有办法使其工作?默认值必须是常量-不能提供依赖于其他
public string this[string data, int maxOccurences = stringData.Length]
是否有办法使其工作?默认值必须是常量-不能提供依赖于其他变量的常量。所以这很好:
public string this[string data, int maxOccurences = 0]
但你得到的是无效的。诚然,您收到的错误消息的原因稍有不同,但即使您能够克服这一点,您也会遇到常量问题。默认值必须是常量-您不能提供依赖于另一个变量的常量。所以这很好:
public string this[string data, int maxOccurences = 0]
但你得到的是无效的。诚然,您收到的错误消息的原因稍有不同,但即使您能够克服这一点,您也会遇到常量问题。请参阅msdn
每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送参数,则使用默认值。默认值必须是以下表达式类型之一:
- 恒定的表达式李>
- 形式为new ValType()的表达式,其中 ValType是一种值类型,例如枚举或结构李>
- 表情 默认形式(ValType),其中ValType是值类型
- 恒定的表达式李>
- 形式为new ValType()的表达式,其中 ValType是一种值类型,例如枚举或结构李>
- 表情 默认形式(ValType),其中ValType是值类型
Int32.MaxValue
的常量字段并将其设置为参数的默认值来实现它。啊,好的。我创建了一个等于Int32.MaxValue
的常量字段,并将其设置为参数的默认值,从而使其正常工作。