Es posible declarar una constante Guid en C#?

Entiendo que puedo declarar un static readonly Guid, pero hay una sintaxis que me permite escribir const Guid?

  • ¿Qué hay de malo con una estática readonly Guid?
  • Nada, si es la única manera de hacerlo.
  • una constante es evaluada en tiempo de compilación, una estática se evalúa en tiempo de ejecución.
  • muy cerca de: why-cant-structs-be-declared-as-const
  • Como algunas de las respuestas señalan actualmente no hay manera de hacer un Guid const. ProVega la respuesta de usar una constante de cadena, para mí, es probablemente la mejor respuesta. No me gusta su uso de la propiedad, pero me gustaría crear un estático readonly Guid basado en la cadena. Principal ventaja es que usted puede utilizar Guid normalmente con la única excepción de una instrucción switch. En ese punto usted podría utilizar la const cadena de miembro. instrucción switch es la única ocasión en la que he ejecutado en donde estática readonly no funciona.
InformationsquelleAutor smartcaveman | 2011-02-07

5 Comentarios

  1. 58

    No. El const modificador sólo se aplica a los «primitivos» de tipos (bool, int, float, double, long, decimal, short, byte) y las cadenas. Básicamente cualquier cosa que usted puede declarar como un literal.

    • Es realmente define la otra manera alrededor. Usted puede utilizar const para cualquier tiempo de compilación valores literales. C# en realidad no define el término «tipo primitivo»; es técnicamente sólo la jerga. Otros idiomas el uso de definir el término «tipos primitivos» y tiene una lista fija de tales tipos. De hecho, hay un único tiempo de compilación literal para Guid, y que es default(Guid). Que es el único tiempo de compilación literal para Guid aunque.
  2. 41

    Declarar como static readonly Guid en lugar de const Guid

    • Creo que esta es la mejor respuesta porque es el único que ofrece una alternativa sin necesidad de cambiar el resultado final, la estática de sólo lectura puede ser utilizado en la misma forma de una constante, incluyendo intellisense
    • Es un muy útil la publicación (+1 de mi parte), pero técnicamente, incluso no responder a la pregunta («¿Es posible declarar una constante Guid en C#?»), ni da ninguna explicación sobre porque la respuesta es sí o no. Se proporciona una solución, pero no explica cómo static readonly difiere de const, y lo que la implicación son de usar uno en lugar del otro. Por lo tanto, está lejos de lo que una «mejor respuesta» debe ser similar.
  3. 26
    public static readonly Guid Users = new Guid("5C60F693-BEF5-E011-A485-80EE7300C695");

    y es que.

    • Que no es constante, sólo readonly
    • Sin embargo, es una alternativa adecuada.
    • No es una alternativa adecuada si usted necesita algo que se evalúan en tiempo de compilación.
    • Un caso de uso de este no ser constante sería CÓDIGO de INICIO public static readonly Guid defaultGuid = nuevo Guid(«5C60F693-BEF5-E011-A485-80EE7300C695»); protegido bool (Guid userID = defaultGuid); { return false; } CÓDIGO de FIN no compilar. como el guid no es una constante en tiempo de compilación
    • Exactamente lo que estaba buscando ! 🙂
  4. 22

    Mientras que usted parece que no puede hacer que usted puede hacer que sea analizado siempre que usted necesite:

    const string _myGuidStr = "e6b86ea3-6479-48a2-b8d4-54bd6cbbdbc5";

    Pero no utilizar el guid ya que me pertenece a mí únicamente, la primera vez que lo generó así que me reclama derechos de propiedad sobre este particular guid arriba! Pero estoy generious – utilice esta vez (no me gusta cómo se habla de espaldas a mí, pero es un buen guid en general, cuando se mantiene su boca cerrada): 284c694d-d9cc-446b-9701-b391876c8394

    • +1, aunque su GUID habló de nuevo a mí.
    • usted debe considerar la venta de Guid …
    • Son uno de una clase!
    • wasteaguid.info
  5. 5

    Estoy haciendo así:

    public static class RecordTypeIds
    {
        public const string USERS_TYPEID = "5C60F693-BEF5-E011-A485-80EE7300C695";
        public static Guid Users { get { return new Guid(EntityTypeIds.USERS_TYPEID); } }
    }
    • usted obtendrá un poco mejor de rendimiento con un campo readonly en lugar de una propiedad que crea un nuevo Guid para cada acceso
    • Me gusta tu respuesta la mejor, menos el de obtener la propiedad. Estoy de acuerdo con smartcaveman…sólo tienes que hacer un public static readonly Guid.
    • Ohh y la única razón por la que me gusta de esta la mejor es la que permite que la cadena ser utilizado en la instrucción switch. Todos los otros lugares que el uso de la estática readonly Guid.

Dejar respuesta

Please enter your comment!
Please enter your name here