/// <summary> /// インスタンスがsrcで示されるアドレスと同じかどうかを返す /// </summary> public bool Equals(Ipaddr src) { if (src == null) { return(false); } if (IsValid()) { if (!src.IsValid()) { return(false); } if (vals.Length != src.vals.Length) { return(false); } for (int i = 0; i < vals.Length; i++) { if (vals[i] != src.vals[i]) { return(false); } } return(true); } else { if (src.IsValid()) { return(false); } return(true); } }
/// <summary> /// インスタンスがsrcで示されるアドレスパターンを内包しているかどうかをチェックする /// </summary> public bool Contains(Ipaddr src) { if (!src.IsValid()) { return(false); } return(ToString().Contains(src.ToString())); }
/// <summary> /// 文字列表現を返す /// </summary> /// <remarks> /// <para> /// 開始アドレスと終了アドレスが同一の場合は単一IPアドレスの形式、 /// さもなければ '-'で開始アドレスを終了アドレスをつなげた形式。 /// 無効なIPアドレスの場合は空文字列を返します。 /// </para> /// </remarks> override public string ToString() { if (!StartAddr.IsValid()) { return(""); } if (!EndAddr.IsValid() || EndAddr.IsZero() || (StartAddr == EndAddr)) { return(StartAddr.ToString()); } return(StartAddr.ToString() + "-" + EndAddr.ToString()); }
/// <summary> /// 他のIpaddrをコピーする /// </summary> /// <returns>自分自身</returns> public Ipaddr Set(Ipaddr ipaddr) { if ((ipaddr != null) && ipaddr.IsValid()) { if ((vals == null) || (vals.Length != ipaddr.vals.Length)) { vals = new byte[ipaddr.vals.Length]; } for (int i = 0; i < vals.Length; i++) { vals[i] = ipaddr.vals[i]; } } else { Clear(); } return(this); }