c# - 具有不同设置和获取类型的访问器?

标签 c# variables types accessor

简单的问题,希望是一个简单的答案:

我想做以下事情:

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/

相关文章:

python - 如何为检查按钮分配值并使用它们来计算分数?

c# - Dictionary<string,/> 是什么意思?

c# - 在类中创建不需要由该类的对象调用的方法

java - 如何通过 JavaFX 应用程序将变量传递给 Controller ​​?

javascript - 在数组中选择随机索引并从不同函数调用变量。 JavaScript

c - 当指针未指向正确的类型时,为什么 gcc 允许取消引用。为什么还要有类型?

typescript - 其余元素必须在元组类型的最后

java - 将加密方法从 Java 转换为 C#

c# - 如何将对象映射到 C# .NET 中的现有 XML 文件?

c++ 自动覆盖有符号/无符号