2012-02-22 11 views
5

¿Es posible de alguna manera definir una constante que diga qué tipo de datos usar para ciertas variables, similar a los genéricos? Así que en una determinada clase me gustaría tener algo como lo siguiente:C#: Declarar una variable constante para el tipo de datos para usar

MYTYPE = System.String; 

// some other code here 

MYTYPE myVariable = "Hello"; 

Desde el principio, debería hacer lo mismo que los genéricos, pero no quiero escribir el tipo de datos cada vez que el constructor para esta clase se llama. Simplemente debería garantizar que para dos (o más) variables se use el mismo tipo de datos.

+0

¿Qué pasa con los genéricos? No te gustan debido a constructores largos? Envuélvalos en 'Clases' con un nombre corto ... ' clase Blub: VeryLongClass ' –

Respuesta

7

Bueno, puede utilizar una directiva using:

using MYTYPE = System.String; 

Sin embargo , eso no es realmente como un typedef, en particular, este código ahora es perfectamente válido:

MYTYPE x = "hello"; 
string y = "there"; 
x = y; 

El compilador sabe que todavía son del mismo tipo.

No está muy claro lo que estamos tratando de lograr, sobre todo aquí:

no quiero escribir el tipo de datos cada vez que el constructor para esta clase se llama.

¿Qué quieres decir?

Tenga en cuenta que el uso de directivas es específico de un archivo fuente, no de un proyecto completo.

+0

Quiero decir que no quiero definir el tipo de datos para usar en el constructor (como es el caso con una clase genérica). La directiva de uso es exactamente lo que busqué. ¡Muchas gracias! – user1225775

+0

@ user1225775: Todavía no está claro qué quiere decir con respecto al constructor, para ser honesto. Un ejemplo completo de lo que intentabas lograr y lo que querías decir sobre los genéricos habría hecho esto * mucho * más claro, algo a tener en cuenta para la próxima vez. –

+0

Cuando me gustaría llamar a un constructor para una clase usando genéricos, tendría que decir: MyObject mo = new MyObject () por ejemplo. Pero eso significaría que puede haber más instancias de MyObject con diferentes tipos de datos para T. Por ejemplo, podría decir en la siguiente línea: MyObject mo2 = new MyObject ().Eso no es lo que quería porque quiero que el tipo (para el que ahora uso la directiva using) sea el mismo para todas las instancias de este objeto. – user1225775

4

Usted puede hacer eso con un using alias:

using MyType = System.String; 

sin embargo, sólo en función de cada archivo. Francamente, es útil para hacer un alias corto de algún tipo genérico compuesto complejo (estoy pensando en "Owin", etc.), pero aparte de eso, los genéricos son más versátiles.

2

Se podría utilizar un alias:

using System; 
using MYTYPE = System.String; 

class Program 
{ 
    static void Main() 
    { 
     MYTYPE f = "Hello"; 
     Console.WriteLine(f); 
    } 
} 
Cuestiones relacionadas