En C#, "0x" es el conjunto de caracteres reservados para representar, en tiempo de diseño, valores hexadecimales literales. (en Vb.Net sería "&H")
El valor hexadecimal 0x1 equivale a 1 en decimal, así que a tu duda: si, en el ejemplo que has mostrado estás usando el mismo valor.
Respecto a utilizar enumeraciones o constantes, no hay una respuesta facil, es más bien una cuestión de diseño que de beneficios, aunque se puede compaginar diseño y beneficios, y el uso de constantes y enumeraciones, todo depende de lo que quieras y los resultados visuales que quieras obtener...
Por ejemplo si desarrollas un método cuyo parámetro espera recibir un valor de entre una serie de valores constantes, entonces ahí deberías implementar la Enum para definir esos valores, de esta forma estás encapsulando la información en un único miembro o unidad de código, beneficiando así a la estructura/organización y legibilidad del código, y sobre todo ganando productividad para ti y para los posibles usuarios de tus APIs, ya que siempre será mucho más amistoso y preciso escribir el nombre de una Enum, que tener que memorizar el nombre de cada constante por separado.
Otro beneficio de una Enum es que el valor lo puedes representar como un valor numérico, o como texto (el nombre del valor).
Adicionalmente a los beneficios "de fábrica" de una Enum, el máximo beneficio tal vez sea poder utilizar el atributo
FlagsAttribute para combinar valores y añadir así una mejora tanto estética como "interna", me refiero a que aumentaría la productividad y eficiencia del código fuente en general con los miembros dedicados a este tipo de Enums (ej.
Enum.HasFlag), lo que ayuda a ver de una forma distinta el tratamiento de condicionales/switchs sobre Enums;
, aunque para ello primero se deben dar las circunstancias adecuadas en los valores que componen a la Enum, y eso en tu código no es posible.
Personalmente no encuentro ninguna desventaja en reemplazar una constante por una enumeración, el código que has mostrado es apto para implementar una Enum.
Si tuvieras solo un par de valores, y si dichos valores no tuviesen relación entre si, entonces si que te diría que lo mejor sería declarar constantes, pero no es el caso.
De todas formas hazlo como prefieras, al fin y al cabo el resultado que vas a obtener es el mismo, usar Enums o constantes solo cambiará la experiencia de programación sobre el entorno.
Cita de: Meta en 30 Diciembre 2015, 11:49 AMbyte[] mBuffer = new byte[1];
mBuffer[0] = 0x01;
serialPort1.Write(mBuffer, 0, mBuffer.Length);
serialPort1.Write((byte)Dex_Comandos.STATUS);
Este código no funciona.
En el primer código usas un array de bytes, pero en el segundo usas un valor byte. La diferencia es muy clara.
Podría mostrarte un ejemplo, pero es demasiado facil, solo debes fijarte mejor en lo que estás haciendo, lo puedes solucionar por ti mismo perfectamente.
El valor lo tienes en
Dex_Comandos.STATUS, pues simplemente asigna ese valor al primer item con índice "0" del Array como haces en el primer código.
PD:
Ten en cuenta que puedes declarar los valores de la Enum como tipo Byte.
public enum MyEnum : byte
{
name = 1
}
Saludos
Muy buena la explicación paso a paso. Excelente documentación.
Buen trabajo.