public SteamParamStringArray(System.Collections.Generic.IList<string> strings) {
if (strings == null) {
m_pSteamParamStringArray = IntPtr.Zero;
return;
}
m_Strings = new IntPtr[strings.Count];
for (int i = 0; i < strings.Count; ++i) {
byte[] strbuf = new byte[Encoding.UTF8.GetByteCount(strings[i]) + 1];
Encoding.UTF8.GetBytes(strings[i], 0, strings[i].Length, strbuf, 0);
m_Strings[i] = Marshal.AllocHGlobal(strbuf.Length);
Marshal.Copy(strbuf, 0, m_Strings[i], strbuf.Length);
}
m_ptrStrings = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * m_Strings.Length);
SteamParamStringArray_t stringArray = new SteamParamStringArray_t() {
m_ppStrings = m_ptrStrings,
m_nNumStrings = m_Strings.Length
};
Marshal.Copy(m_Strings, 0, stringArray.m_ppStrings, m_Strings.Length);
m_pSteamParamStringArray = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SteamParamStringArray_t)));
Marshal.StructureToPtr(stringArray, m_pSteamParamStringArray, false);
}