源碼
1 [StructLayout(LayoutKind.Explicit)]
2 public struct IP
3 {
4 public IP(UInt32 value)
5 {
6 this._text1 = 0;
7 this._text2 = 0;
8 this._text3 = 0;
9 this._text4 = 0;
10 this._value = value;
11 }
12 public IP(Byte text1, Byte text2, Byte text3, Byte text4)
13 {
14 this._value = 0;
15 this._text1 = text1;
16 this._text2 = text2;
17 this._text3 = text3;
18 this._text4 = text4;
19 }
20 [FieldOffset(0)]
21 private UInt32 _value;
22 [FieldOffset(0)]
23 private Byte _text1;
24 [FieldOffset(1)]
25 private Byte _text2;
26 [FieldOffset(2)]
27 private Byte _text3;
28 [FieldOffset(3)]
29 private Byte _text4;
30
31 public UInt32 Value
32 {
33 get { return this._value; }
34 set { this._value = value; }
35 }
36 public Byte Text1
37 {
38 get { return this._text1; }
39 set { this._text1 = value; }
40 }
41 public Byte Text2
42 {
43 get { return this._text2; }
44 set { this._text2 = value; }
45 }
46 public Byte Text3
47 {
48 get { return this._text3; }
49 set { this._text3 = value; }
50 }
51 public Byte Text4
52 {
53 get { return this._text4; }
54 set { this._text4 = value; }
55 }
56
57 public override string ToString()
58 {
59 return String.Format("{0}.{1}.{2}.{3}", this._text1.ToString(), this._text2.ToString(),
60 this._text3.ToString(), this._text4.ToString());
61 }
62
63 public static implicit operator IP(UInt32 value)
64 {
65 return new IP(value);
66 }
67 public static explicit operator UInt32(IP ip)
68 {
69 return ip._value;
70 }
71 }
測試
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 IP ip = new IP(192,168,1,1);
6 Console.WriteLine(ip);
7 UInt32 value = (UInt32)ip;
8 Console.WriteLine(value);
9 Console.WriteLine(ip.Value);
10 IP ip2 = (IP)(1234567);
11 Console.WriteLine(ip2);
12
13 Console.ReadKey();
14 }
15 }
作者:
Blackheart出處:
http://linianhui.cnblogs.com本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。