今日のC#インタラクティブ (2017/06/07) ~構造体編~

こんにちは、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)]

今回は、ここまでです。
構造体を書いたので長く感じた方もいらっしゃると思いますが、今回も内容は薄いですね。
最後まで読んでくれてありがとうございました。

コメントを残す

WordPress.com で次のようなサイトをデザイン
始めてみよう