程序里面经常有Get和Set方法,对于有些是既有Get也有Set的,那么可以很明显使用Property会更好一些但是对于一些只有Get活着只有Set的方法,是用方法好还是用Property好呢?另外,对于类似以下类型 var GetXXX (var i){}这种带参数的方法,是用方法好呢,还是用Indexer好呢?

解决方案 »

  1.   

    当值只能被当前实例更改时,不允许外部修改时用GET
    当值只能被当前实例使用时,不允许外部获取时用SET
    同时允许设置和修改时用GET+SETVAR 函数只能在方法内部使用,作用域有限使用属性还是方法要看你处理什么样的逻辑,一般情况下不在属性里写过多的逻辑运算,并且只跟当前属性有关的算法
    如可以通用的算法还是使用方法比较使用,因为属性不允许传递参数,SO...为了复用建议使用方法,完全没有复用并且只跟当前实例有关,非常私有就用属性
      

  2.   

    不是在说Property吗,怎么又转到Indexer了?var GetXXX (var i){}可以这样写吗?
    用Get和Set方法不就等于在用Property吗?
    显然Property是用来管理field的,而method用来功能处理的,虽然可以返回值,但返回的不一定是输入的类型,不过Property对类型要求很严的,必须一致。
      

  3.   


    一般建议用属性,读写控制方便,在外面调用也方便Var 方法用的比较少,给人觉得不好。
      

  4.   


    Public ReadOnly Property wfsjStart() As DateTime
            Get
                Return CDate(String.Format("{0} 00:00:00", Request.QueryString(showHphm.PARAM_WFSJSTART)))
            End Get
        End Property
    public WriteOnly Property xxxxx()
    Set
    [.........]
    End Set
    End Property