我有这个类:自定义类型。分配。如何复制实例并仅分配值部分?
public struct Field<T>
{
public Field(int ordinal, int number)
: this(ordinal, number, default(T))
{
}
public Field(int ordinal, int number, T value)
: this()
{
Ordinal = ordinal;
Number = number;
Value = value;
}
public int Ordinal
{
get;
private set;
}
public int Number
{
get;
private set;
}
public T Value
{
get;
private set;
}
public static implicit operator Field<T>(T value)
{
Field<T> sarsField = new Field<T>();
sarsField.Value = value;
return sarsField;
}
public static implicit operator T(Field<T> value)
{
return value.Value;
}
public override string ToString()
{
return Value.ToString();
}
}
我用它如下:
// Declare field
Field<DateTime> dateOfBirth = new Field<DateTime>(5, 25);
// Set value
dateOfBirth = DateTime.Today;
问题是当我分配一个DateTime
到dateOfBirth
它构建了一个new Field
,但失去了原有的值Ordinal
和Number
。如何在做隐式赋值时只更改Value
属性?这可能吗?
如果我做的setter公众Value
,我可以这样做:
// Set value
dateOfBirth.Value = DateTime.Today;
仅实现了Value
设置,保留Ordinal
和Number
的期望的结果。但是,我真的很想隐式地这样做。有一些地方我想用Field<Type>
替换Type
。因此,我正在寻找一个隐含的解决方案。
+1,这就是[自定义赋值运算符](http://msdn.microsoft.com/en-us/library/09479473.aspx)必须是'static'的原因。 – Noseratio