// IpKindによるコンストラクタ public Ip(IpKind ipKind) { String ipStr = ""; switch (ipKind) { case IpKind.V4_0: ipStr = "0.0.0.0"; break; case IpKind.V4_255: ipStr = "255.255.255.255"; break; case IpKind.V6_0: ipStr = "::"; break; case IpKind.V6_FF: ipStr = "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"; break; case IpKind.InAddrAny: ipStr = "INADDR_ANY"; break; case IpKind.In6AddrAnyInit: ipStr = "IN6ADDR_ANY_INIT"; break; case IpKind.V4Localhost: ipStr = "127.0.0.1"; break; case IpKind.V6Localhost: ipStr = "::1"; break; default: //定義が不足している場合 Util.RuntimeException(String.Format("Ip(IpKind) ipKind={0}", ipKind)); break; } try { Init(ipStr); } catch (ValidObjException) { //ここで例外が発生するのは、設計上の問題 Util.RuntimeException(ipStr); } }