是否存在特定情况,即WriteOnly
属性比方法更有意义?方法方法对我来说更自然.
什么是正确的方法?
使用属性:
Public WriteOnly Property MyProperty As String
Set(ByVal value as String)
m_myField = value
End Set
End Property
public string MyProperty
{
set{ m_myField = value;}
}
使用方法:
Public Sub SetMyProperty(ByVal value as String)
m_myField = value
End Sub
public void SetMyProperty(string value)
{
m_myField = value;
}
编辑 只是为了澄清我指的是"WriteOnly"属性.
我认为属性表示可以是只读或读/写的东西.只写属性的行为并不明显,因此我避免创建它们.
例如,在视图的下拉列表中设置值列表并访问所选项:
public interface IWidgetSelector { void SetAvailableWidgets(string[] widgets); string SelectedWidget { get; set; } }
比以下更有意义:
public interface IWidgetSelector { string[] AvailableWidgets { set; } string SelectedWidget { get; set; } }
对于它的价值,微软框架设计指南(如其FxCop工具中所体现的)不鼓励只写属性并标记它们作为API设计问题的存在,因为该方法不直观.