1 internal sealed class NameValuePair
2 {
3 readonly private string _name;
4 readonly private string _value;
5 readonly private int _length;
6 private NameValuePair _next;
7
8 internal NameValuePair(string name, string value, int length)
9 {
10 Debug.Assert(!string.IsNullOrEmpty(name), "empty keyname");
11 _name = name;
12 _value = value;
13 _length = length;
14 }
15
16 internal int Length
17 {
18 get
19 {
20 Debug.Assert(0 < _length, "NameValuePair zero Length usage");
21 return _length;
22 }
23 }
24
25 internal string Name => _name;
26 internal string Value => _value;
27
28 internal NameValuePair Next
29 {
30 get { return _next; }
31 set
32 {
33 if ((null != _next) || (null == value))
34 {
35 throw new Exception();
36 }
37 _next = value;
38 }
39 }
40 }
41 class Program
42 {
43 static void Main(string[] args)
44 {
48
49 NameValuePair chain1 = null, chain2 = null;
50
51 for (var i = 1; i < 6; i++)
52 {
53 if (null != chain2)
54 {
55 chain2 = chain2.Next = new NameValuePair(i.ToString(), Guid.NewGuid().ToString(), i);
56 }
57 else
58 {
59 chain1 = chain2 = new NameValuePair(i.ToString(), Guid.NewGuid().ToString(), i);
60 }
61 }
62
63
64
65
66
67
68
69 System.Console.WriteLine("Hello World!");
70 }