|
|
@@ -4,23 +4,33 @@ namespace System.Reactive
|
|
|
{
|
|
|
internal class ImmutableList<T>
|
|
|
{
|
|
|
- T[] data;
|
|
|
+ private readonly T[] _data;
|
|
|
|
|
|
public ImmutableList()
|
|
|
{
|
|
|
- data = new T[0];
|
|
|
+ _data = new T[0];
|
|
|
}
|
|
|
|
|
|
public ImmutableList(T[] data)
|
|
|
{
|
|
|
- this.data = data;
|
|
|
+ _data = data;
|
|
|
+ }
|
|
|
+
|
|
|
+ public T[] Data
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ return _data;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public ImmutableList<T> Add(T value)
|
|
|
{
|
|
|
- var newData = new T[data.Length + 1];
|
|
|
- Array.Copy(data, newData, data.Length);
|
|
|
- newData[data.Length] = value;
|
|
|
+ var newData = new T[_data.Length + 1];
|
|
|
+
|
|
|
+ Array.Copy(_data, newData, _data.Length);
|
|
|
+ newData[_data.Length] = value;
|
|
|
+
|
|
|
return new ImmutableList<T>(newData);
|
|
|
}
|
|
|
|
|
|
@@ -29,23 +39,22 @@ namespace System.Reactive
|
|
|
var i = IndexOf(value);
|
|
|
if (i < 0)
|
|
|
return this;
|
|
|
- var newData = new T[data.Length - 1];
|
|
|
- Array.Copy(data, 0, newData, 0, i);
|
|
|
- Array.Copy(data, i + 1, newData, i, data.Length - i - 1);
|
|
|
+
|
|
|
+ var newData = new T[_data.Length - 1];
|
|
|
+
|
|
|
+ Array.Copy(_data, 0, newData, 0, i);
|
|
|
+ Array.Copy(_data, i + 1, newData, i, _data.Length - i - 1);
|
|
|
+
|
|
|
return new ImmutableList<T>(newData);
|
|
|
}
|
|
|
|
|
|
public int IndexOf(T value)
|
|
|
{
|
|
|
- for (var i = 0; i < data.Length; ++i)
|
|
|
- if (data[i].Equals(value))
|
|
|
+ for (var i = 0; i < _data.Length; ++i)
|
|
|
+ if (_data[i].Equals(value))
|
|
|
return i;
|
|
|
- return -1;
|
|
|
- }
|
|
|
|
|
|
- public T[] Data
|
|
|
- {
|
|
|
- get { return data; }
|
|
|
+ return -1;
|
|
|
}
|
|
|
}
|
|
|
}
|