public char this[int p] { get { if (str != null) return str [p]; else return CFStringGetCharacterAtIndex (handle, p); } }