Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 索引器中的可选参数-需要对象引用错误_C#_Optional Parameters_Indexer - Fatal编程技术网

C# 索引器中的可选参数-需要对象引用错误

C# 索引器中的可选参数-需要对象引用错误,c#,optional-parameters,indexer,C#,Optional Parameters,Indexer,在重载索引类中,我有一个名为stringData的私有数组字段,其大小在类构造函数中设置。我想创建一个带有可选参数的索引器。它的默认值应该是该数组中的项数 不幸的是,本文底部的代码行引发了以下编译时错误: 非静态字段、方法或属性“OverloadedIndex.stringData”需要对象引用。 public string this[string data, int maxOccurences = stringData.Length] 是否有办法使其工作?默认值必须是常量-不能提供依赖于其他

在重载索引类中,我有一个名为stringData的私有数组字段,其大小在类构造函数中设置。我想创建一个带有可选参数的索引器。它的默认值应该是该数组中的项数

不幸的是,本文底部的代码行引发了以下编译时错误:

非静态字段、方法或属性“OverloadedIndex.stringData”需要对象引用。

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是值类型
见msdn

每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送参数,则使用默认值。默认值必须是以下表达式类型之一:

  • 恒定的表达式
  • 形式为new ValType()的表达式,其中 ValType是一种值类型,例如枚举或结构
  • 表情 默认形式(ValType),其中ValType是值类型

啊,好吧。我确实通过创建一个等于
Int32.MaxValue
的常量字段并将其设置为参数的默认值来实现它。啊,好的。我创建了一个等于
Int32.MaxValue
的常量字段,并将其设置为参数的默认值,从而使其正常工作。