What is the size of the enum below in bytes?
public enum MMTPCnxNckRsn
{
MMTPCnxNckRsnNoAnswer = -2,
MMTPCnxNckRsnSendError = -1,
MMTPCnxNckRsn
The documentation says:
The default underlying type of enumeration elements is int.
Therefore, your data type will have the size of 4 bytes, which is the size of an int.
You can confirm this by using the following command:
Marshal.SizeOf(Enum.GetUnderlyingType(typeof(MMTPCnxNckRsn)));
Whilst you refer to the enum values in source code using a name, they are represented in the code that runs on the machine as integer values. So your comment about string arrays is quite wide of the mark.
I also think you are over-thinking the issue of size. Looking at your other recent question, you seem to be translating a C++ structure to C# for pinvoke. Well, the C# enum will map straight onto the C++ enum. The pinvoke marshaller will look after the sizes and lay them out for you. You do not need to handle that explicitly.