我有這個類:自定義類型。分配。如何複製實例並僅分配值部分?
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