C # конвертировать T в длинные - PullRequest
5 голосов
/ 02 мая 2011

У меня есть универсальный класс (C #),

class MyClass<T> where T : struct, IComparable<T>
{
    public T filelocation;
}

T может быть UInt32 или UInt64 (больше ничего).

Мне нужно преобразовать расположение файла в long, чтобы искать в файле ...

Я пробовал следующее

long loc = (T)myclass.filelocation;

long loc = (T)(object)myclass.filelocation;

Но, похоже, ничего не работает ...

Есть идеи?

Ответы [ 4 ]

11 голосов
/ 02 мая 2011

Вызов Convert.ToInt64.

Запись (object)fileLocation создает в штучной упаковке UInt32.
Типы в штучной упаковке могут быть распакованы только с их исходными типами значений , поэтому вы не можетеприведите его за один шаг к long.
Вы можете написать (long)(ulong)fileLocation, но это не удастся для uint по той же причине.

1 голос
/ 02 мая 2011

Попробуйте Convert.ToInt64 .

long loc = Convert.ToInt64(myclass.filelocation);
1 голос
/ 02 мая 2011

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

long lng;
int testNum = 55;
long.TryParse(testNum.ToString(),out lng);
0 голосов
/ 02 мая 2011

с вашим определением класса, если я напишу что-то вроде

public MyClass<long> myclass = new MyClass<long>();
    public long returnLong() 
            {
                return myclass.filelocation;
            }

myclass.fileLocation вернет long по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...