Попробуйте поймать создание нового массива в C # - где его инициализировать? - PullRequest
0 голосов
/ 26 октября 2011

Если я читаю строку из файла конфигурации, я бы использовал подход, аналогичный приведенному ниже, в случае, если строка не присутствует в читаемом файле и возникает исключительная ситуация.Однако, если я хочу сделать то же самое для массива string [], я не могу просто «создать его» вне блока try, потому что размер неизвестен.

Я не могу его обновитьв самом блоке try.Как к нему подойти?

string[] logContent; // can't new it up here as don't know the size

                try
                {
                    logContent = File.ReadAllLines(aLogFile);
                }
                catch
                {
                    throw new Exception("LoggerStandard: Specified Logfile exists but could not be read.");
                }

Ответы [ 4 ]

6 голосов
/ 26 октября 2011

Вы можете инициализировать его значением по умолчанию:

string[] logContent = null; 
try
{
    logContent = File.ReadAllLines(aLogFile);
}
catch
{
    // Be careful with the error message here => there might be other reasons
    // that the ReadAllLines threw an exception
    throw new Exception("LoggerStandard: Specified Logfile exists but could not be read.");
}
1 голос
/ 26 октября 2011

Вы можете инициализировать его с помощью null, а затем проверить его.

0 голосов
/ 26 октября 2011
string[] logContent=null;
try
{
     logContent = File.ReadAllLines(aLogFile);                 
}                 
catch                 
{                     
  throw new Exception("LoggerStandard: Specified Logfile exists but could not be read.");                 
} 
0 голосов
/ 26 октября 2011

По умолчанию это ноль. Вы можете оставить все как есть, если это подходит для вашей программы, или инициализировать любой массив в соответствии с вашими потребностями. В любом случае, успешная инициализация внутри блока try переопределяет это.

...