C# その他
いままで取り上げてこなかったことをまとめます。Null許容型
変数定義にはてな(?)をつけると、Null許容型になります。これを使用すると例えばint型の変数にNullがセットできるようになります。
また、はてなはてな(??)でOracleのNVLのように指定変数がNullの場合に
別の値を適用することができます。
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int? i = null;
Console.WriteLine("null:" + i);
i += 10;
Console.WriteLine("+=:" + i);
i = 20;
Console.WriteLine("=:" + i);
int? x1 = null;
int? x2 = 30;
int x3 = x1 ?? x2 ?? 0 ;
Console.WriteLine("??:" + x3);
Console.Read();
}
}
}
実行イメージ i += 10;を行っている箇所はnullに値をプラスしようとしているので、結果はnullになります。
x1 ?? x2 ?? 0 ; を行っている箇所は、x1がnullなので、次にx2を見に行き、x2がnullでないので、x2を出力
しています。x2もnullの場合、0が出力されます。
プロパティ
プロパティは、getter、setterメソッドをメンバ変数のように扱えるようにしたものです。処理の部分を省略することもできます。その場合、セットされた値はvalueで取得することができます。
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Test test = new Test(0, 1, 2);
Console.WriteLine("idx0:" + test.idx0);
Console.WriteLine("idx1:" + test.idx1);
Console.WriteLine("idx2:" + test.idx2);
Console.Read();
}
}
class Test
{
public int idx0;
private int __idx1;
public Test(int x, int y, int z)
{
idx0 = x;
idx1 = y;
idx2 = z;
}
public int idx1
{
get { return __idx1; }
private set { __idx1 = value; }
}
public int idx2
{
get;
private set;
}
}
}
実行イメージ idx1、idx2は両方ともsetをprivateにしているため、クラスの外からは値のセットできません。
外でも値のセットを行う場合、privateを外して下さい。
ページのトップへ戻る