public string[] ToArray() { var count = Count; if (count < 1) { return(new string[0]); // MSDN guidelines prefer empty arrays } var rc = new string[count]; using (var holder = new OnString()) { var ptr_holder = holder.NonConstPointer(); for (var i = 0; i < count; i++) { UnsafeNativeMethods.ArrayString_Get(m_ptr, i, ptr_holder); rc[i] = holder.ToString(); } } return(rc); }