default(string) が Null なのをよく忘れるので、 default(T) の値をまとめてみました。
class Program
{
static void Main(string[] args)
{
$@"dyte: {default(byte)}".Dump(); //0
$@"sbyte: {default(sbyte)}".Dump(); //0
$@"int: {default(int)}".Dump(); //0
$@"uint: {default(uint)}".Dump(); //0
$@"short: {default(short)}".Dump(); //0
$@"ushort: {default(ushort)}".Dump(); //0
$@"long: {default(long)}".Dump(); //0
$@"ulong: {default(ulong)}".Dump(); //0
$@"float: {default(float)}".Dump(); //0
$@"double: {default(double)}".Dump(); //0
$@"char(hex): {Convert.ToInt32(default(char)):X}".Dump(); //0
$@"bool: {default(bool)}".Dump(); //false
$@"object: {default(object) ?? "null"}".Dump(); //null
$@"string: {default(string) ?? "null"}".Dump(); //null
$@"decimal: {default(decimal)}".Dump(); //0
var sample = default(Sample1);
$@"struct(Prop1): {sample.Prop1 ?? "null"}".Dump(); //null
$@"struct(Prop2): {sample.Prop2}".Dump(); //0
$@"Class(isNull): {default(Sample2) == null}".Dump(); //null
$@"Enum: {default(EnumSample)}".Dump(); //num1
Console.ReadLine();
}
}
public enum EnumSample { num1, num2, num3 }
public struct Sample1 { public string Prop1; public int Prop2; }
public class Sample2
{
public string Prop1 { get; set; }
private int Prop2 { get; set; }
}
public static class StringExtension
{
public static void Dump(this string input)
{
Console.WriteLine(input);
}
}
