У меня есть метод на С #, в котором он возвращает объект! Мне нужно попробовать здесь

Это мой метод

public T FromBinary()
{
    T obj;
    try
    {
        using (Stream stream = File.Open(this.serializeFilePath, FileMode.Open))
        {
            var binaryFormatter = new BinaryFormatter();
            obj=(T)binaryFormatter.Deserialize(stream);
        }
    }
    catch (Exception e)
    {
        EventLog.WriteEntry("Cannot convert Binary to object", e.Message + "Trace" + e.StackTrace);
    }
    return obj;
}

Но я получаю сообщение об ошибке

Использование неназначенной локальной переменной obj.

Как я могу использовать try catch в методе с возвращаемым объектом T?

3
S M 5 Апр 2016 в 10:17

3 ответа

Лучший ответ

Измените его на T obj = default(T);.

7
diiN__________ 5 Апр 2016 в 07:21

Ошибка возникает из-за того, что вы пытаетесь разрешить вашему методу вернуть объект до того, как ему будет присвоено значение (если код вызывает исключение).

Решение состоит в том, чтобы указать в декларации:

T obj = Default(T);

Вы также должны сделать это try-catch-finally, чтобы вы всегда возвращали объект и закрывали файловый поток следующим образом:

}//end of catch block
finnally{
stream.Close();
return obj;
}
}//end of method
0
pål-jørgen valdersnes 5 Апр 2016 в 07:25

Вы должны написать T obj = default(T);, чтобы присвоить переменной начальное значение

4
Byyo 5 Апр 2016 в 07:30