简单的问题,希望是一个简单的答案:
我想做以下事情:
private DateTime m_internalDateTime;
public var DateTimeProperty
{
get { return m_internalDateTime.ToString(); } // Return a string
set { m_internalDateTime = value; } // here value is of type DateTime
}
以上只是我正在尝试做的一个例子。我想要一个 x 类型的内部变量的公共(public)访问器。我希望将该变量作为字符串获取,但使用 x 类型的内容对其进行设置。
这可能吗?
--编辑--
我刚刚意识到我可以做类似的事情:
private DateTime m_internalDateTime;
public object DateTimeProperty
{
get { return m_internalDateTime.ToString(); } // Return a string
set { m_internalDateTime = (DateTime)value; } // here value is of type DateTime
}
但是,假设我使用类型 y 而不是“字符串”作为我的“获取”类型。如果我想在我的代码中的其他地方使用“DateTimeProperty”,我必须强制转换它。
最佳答案
没有。您显然可以在调用代码中添加 .ToString() ,但是如果没有像这样的不同名称,您将无法执行您的建议:
private DateTime m_internalDateTime;
public DateTime SetDateTime { set { m_internalDateTime = value; } }
public string GetDateTime { get { return m_internalDateTime.ToString(); } }
或者,更好的方法是使用方法而不是属性(如评论中所述):
private DateTime m_internalDateTime;
public void SetDateTime(DateTime dateTime) { m_internalDateTime = dateTime; }
public string GetDateTime() { return m_internalDateTime.ToString(); }
请记住,var
用于隐式、编译时类型化的 variables,而不是动态 变量.
绝对不要做您在编辑中注意到的事情。它引入了对惯例的打破、可能的性能影响(尽管轻微)和重大的本地化问题。
关于c# - 具有不同设置和获取类型的访问器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971747/