public char this [int index] {
get {
if (index >= _length || index < 0)
throw new IndexOutOfRangeException();
return _str [index];
}
set {
if (index >= _length || index < 0)
throw new IndexOutOfRangeException();
if (null != _cached_str)
InternalEnsureCapacity (_length);
_str.InternalSetChar (index, value);
}
}