こんにちは、Takymです。
今日のC#インタラクティブのコーナーです。
今回は構造体編です。
// さっそく構造体を書く。
> struct Test
. {
. public ulong Value;
. public bool IsMasked { get; private set; }
.
. public Test(ulong value)
. {
. Value = value;
. IsMasked = false;
. }
.
. public Test GetMaskedValue()
. {
. Test result = new Test();
. result.Value = ~this.Value;
. result.IsMasked = !this.IsMasked;
. return result;
. }
. }
// 構造体のインスタンスを生成。
> Test t = new Test(123);
// 値表示
> t
[Submission#2+Test]
// ↑あれ?
// ToStringをオーバーライドしてみる
> struct Test
. {
. public ulong Value;
. public bool IsMasked { get; private set; }
.
. public Test(ulong value)
. {
. Value = value;
. IsMasked = false;
. }
.
. public Test GetMaskedValue()
. {
. Test result = new Test();
. result.Value = ~this.Value;
. result.IsMasked = !this.IsMasked;
. return result;
. }
.
. public override string ToString()
. {
. ulong realvalue = this.IsMasked ? ~this.Value : this.Value;
. return $"{this.Value}(real-value: {realvalue})";
. }
. }
// よし、もういちど
> Test t = new Test(123);
> t
[123(real-value: 123)]
// ↑おお、成功した!
// 反転させてみる。
> t.GetMaskedValue()
[18446744073709551492(real-value: 123)]
// うまくいっている。
// 最後にもう一つ。
> t.GetMaskedValue().GetMaskedValue()
[123(real-value: 123)]
今回は、ここまでです。
構造体を書いたので長く感じた方もいらっしゃると思いますが、今回も内容は薄いですね。
最後まで読んでくれてありがとうございました。