带参数的Getter属性

Dan*_*411 29 c# properties

我想我以前见过某个地方,但现在我不记得都找不到它,有没有办法用参数制作一个getter属性?

我的意思是,因为我可以转换"float getSize();" 到"浮动大小"

float getSize() {
    return this.size;
}

float Size {
    get { return this.size; }
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以转换为例如"float getSize(String unit);" "浮动大小(字符串单位)"或类似的东西?

float getSize(String unit) {
    return this.size;
}

float Size(String unit) {
    get {
        if (unit == Unit.Meters)
            return this.size/100;
        else
            return this.size;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为根本没有使用功能的问题,但这样看起来可能更好:P

dri*_*iis 36

回答这个问题:不,这是不可能的,正如已经指出的那样,带参数的getter看起来就像一个方法.

您正在考虑的事情可能是索引的默认属性,如下所示:

class Test
{
    public string this[int index] 
    {
        get { return index.ToString(); } 
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许您索引到Test的实例,如下所示:

Test t = new Test();
string value = t[1];
Run Code Online (Sandbox Code Playgroud)

  • @Dane411:实际上,建议执行昂贵操作的getter除了简单地返回私有字段的值(例如从文件读取数据)或需要获取参数的那些之外,都可以用常规方法实现.将它们命名为`GetXXX()`,每个人都会理解你的代码. (5认同)

小智 19

但就像好奇心一样......在VB .Net中可以使用带参数的属性

如下所示:

  Public ReadOnly Property oPair(param As String) As Result
    Get
       'some code depends on param
    End Get
  End Property
Run Code Online (Sandbox Code Playgroud)

它不比常规功能更好,但有时候有这种可能性很好.

  • 从 C# 调用此类属性会导致方法调用,例如: get_oPair(param) (3认同)