2012-02-22 2 views
5

Возможно ли каким-то образом определить константу, которая говорит, какой тип данных использовать для определенных переменных, аналогичных дженерикам? Так что в определенном классе, я бы что-то вроде следующего:C#: объявление постоянной переменной для типа данных для использования

MYTYPE = System.String; 

// some other code here 

MYTYPE myVariable = "Hello"; 

Из принципа он должен делать то же самое, как дженериков, но я не хочу, чтобы написать тип данных каждый раз, когда конструктор для этого класса называется. Он должен просто гарантировать, что для двух (или более) переменных используется один и тот же тип данных.

+0

Что не так с дженериками? Вы не любите их из-за длинных конструкторов? Оберните их в 'Classes' с коротким именем ... ' class Blub: VeryLongClass ' –

ответ

7

Ну, вы можете использовать using директиву:

using MYTYPE = System.String; 

Однако , что на самом деле не похоже на typedef - в частности, этот код в настоящее время полностью действует:

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

Компилятор знает, что они все еще одного типа.

Это не совсем понятно, что вы пытаетесь достичь, в частности, здесь:

Я не хочу, чтобы написать тип данных каждый раз, когда конструктор для этого класса называется.

Что вы имеете в виду?

Обратите внимание, что использование директив относится только к исходному файлу, а не ко всему проекту.

+0

Я имел в виду, что я не хочу определять тип данных для использования в конструкторе (как в случае с общим классом). Директива using - это именно то, что я искал. Большое спасибо! – user1225775

+0

@ user1225775: По-прежнему неясно, что вы имеете в виду о конструкторе, если быть честным. Полный пример того, что вы пытались достичь, и то, что вы имели в виду для дженериков, сделало бы это * намного более ясным - что-то, что нужно помнить в следующий раз. –

+0

Когда я буду называть конструктор для класса с использованием дженериков, я бы сказал: MyObject mo = new MyObject () например. Но это будет означать, что может существовать больше экземпляров MyObject с различными типами данных для T. Например, я мог бы сказать в следующей строке: MyObject mo2 = new MyObject ().Это не то, что я хотел, потому что я хочу, чтобы тип (для которого я теперь использую директиву using) одинаково для всех экземпляров этого объекта. – user1225775

4

Вы можете сделать это с using псевдоним:

using MyType = System.String; 

однако, только на основе одного файла. Честно говоря, полезно сделать короткий псевдоним некоторого сложного составного родового типа (я думаю о "Owin" и т. Д.), Но кроме этого, дженерики более универсальны.

2

Вы можете использовать псевдоним:

using System; 
using MYTYPE = System.String; 

class Program 
{ 
    static void Main() 
    { 
     MYTYPE f = "Hello"; 
     Console.WriteLine(f); 
    } 
} 
Смежные вопросы