HairColor
おそらくあなたが仕事をしたいものを作るために構造体型でなければならないであろう。さらに、演算子のオーバーロードを行う必要があります。これが本当にあなたが追求したいデザインパスなのかどうかは分かりません。
public struct HairColorStruct
{
private string m_hairColor;
public void Update()
{
// do whatever you need to do here...
}
// the very basic operator overloads that you would need...
public static implicit operator HairColorStruct(string color)
{
var result = new HairColorStruct();
result.m_hairColor = color;
return result;
}
public static explicit operator string(HairColorStruct hc)
{
return hc.m_hairColor;
}
public override string ToString()
{
return m_hairColor;
}
public static bool operator ==(HairColorStruct from, HairColorStruct to)
{
return from.m_hairColor == to.m_hairColor;
}
public static bool operator ==(HairColorStruct from, string to)
{
return from.m_hairColor == to;
}
public static bool operator !=(HairColorStruct from, HairColorStruct to)
{
return from.m_hairColor != to.m_hairColor;
}
public static bool operator !=(HairColorStruct from, string to)
{
return from.m_hairColor != to;
}
}
あなたは、このようなあなたのPerson
オブジェクトを再定義することができます::、いくつかのひねくれた理由で、あなたが絶対にはそれを行う必要がある場合、これはあなたが必要となる構造体の定義の種類(非常に大まかに、LOL)がある
あなたのコードで
public class Person
{
public HairColorStruct HairColor { get; set; }
// whatever else goes here...
}
、HairColor
は単にあなたがいる限り、それはstring
だとして望むものは何でも割り当てることができます。
var person = new Person();
person.HairColor = "Blonde";
// this will emit "True" to the console...
if (person.HairColor == "Blonde")
{
Console.WriteLine(true);
}
else
{
Console.WriteLine(false);
}
// update the info per your logic...
person.HairColor.Update();
// you can change the hair color and update again, LOL
person.HairColor = "Brown";
person.HairColor.Update();
フィールドのフィールドを更新するだけで、操作が複雑になります。 Personクラスにすべてのフィールドを更新する 'Update'メソッドを提供します(Parametersを使用します)。 dbmsのパフォーマンスの違いはほとんどありません。 –
1つの列を更新したい場合は、私の答えを見てください。他のものも良い解決策ですが、私はそれをやるしかありません。 B – Base33