【发布时间】:2013-07-24 07:19:26
【问题描述】:
我需要一点帮助,我正在使用一个类,并希望根据类型 int、string 和 datetime 的选择来设置属性 这是我编写的代码,但由于我的构造函数会在公共字符串 paramValue 和公共 int 之间混淆? paramValue 根据选择设置属性的最佳方法是什么,因此一次只能设置一个属性。感谢您的任何建议
public class PassData
{
private string _ParamName { get; set; }
private int? _ParamValueInt { get; set; }
private string _ParamValueString { get; set; }
private DateTime? _ParamValueDateTime { get; set; }
public string paramName
{
get { return _ParamName; }
set { _ParamName = value;}
}
public string paramValue
{
get { return _ParamValueString; }
set {_ParamValueString = value; }
}
public int? paramValue
{
get { return _ParamValueInt; }
set { _ParamValueInt = value; }
}
public PassData(string ParamName, int ParamValue)
{
paramName = ParamName;
paramValue = ParamValue;
}
public PassData(string ParamName, string ParamValue)
{
ParamName = ParamName;
ParamValueString = ParamValue;
}
public PassData(string ParamName, DateTime ParamValue)
{
ParamName = ParamName;
ParamValueDateTime = ParamValue;
}
}
【问题讨论】:
-
您的代码无法编译。您不能有 2 个具有相同名称的属性。如果可以的话,你不应该。想出好名字很难,但它是成功的一半。它将防止这成为一个问题。
-
您不能使用两种不同的返回类型两次声明相同的属性名称。
-
你对属性和参数的使用有点困惑。
-
为什么不简单地
public class PassData<TDataType> { public TDataType Value {get;set;} } -
您的私有成员通常应该是参数,而不是属性。同样,这并不重要,但是您的大写约定是倒退的。公共属性通常是 Pascal 大写 (
public string ParamValue),而私有参数通常是 Camel 大写 (private string _paramValue) - 带或不带下划线