【发布时间】:2015-04-04 15:37:27
【问题描述】:
在 Java 中,我可以有这样的对象:
public class MyObject {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public void setDate(String date) {
this.date = parseDateString(date);
}
private Date parseDateString(String date) {
// do magic here
return dateObj;
}
}
这很好,因为我的属性有一个 getter 和多个 setter。我可以通过传入一个 Date 对象或一个字符串来设置“日期”属性,然后让类来解决。
在 C# 中看起来有些不同。我可以这样做:
public class MyObject
{
public DateTime Date { get; set; }
}
这里的简写显然是最佳的。但是,我不确定是否有任何内置方法可以重载 setter 以接受多种类型。我意识到我可以创建一个单独的公共方法来设置值,但这会牺牲使用对象初始化器的能力。
有没有办法直接重载 C# 的公共属性上的 setter?还是这只是语言限制,做不到?
【问题讨论】:
-
不是答案,但我会将最新的字符串解析留在
MyClass之外。在 C# 中你只需要使用DateTime.Parse,无论如何。
标签: c#