OriginalGriff
Возвращаемое значение может возвращать только один объект - и хотя это может быть экземпляр класса, содержащий другие экземпляры класса, это все равно означает, что вы можете возвращать только один объект - поэтому, если вы хотите вернуть несколько значений, вам нужно либо создать класс "контейнер" специально для хранения данных, которые вы хотите вернуть вызывающему методу, либо использовать его. out
или ref
параметры.
Например, предположим, что вы создаете метод, который настраивает диалоговое окно открытия файла и позволяет пользователю выбрать файл для вас. Проблема в том, что вы хотите знать, нажал ли пользователь cancel...so теперь у вас есть два элемента, которые вам нужно вернуть: имя файла и bool
который говорит: "пользователь выбрал этот файл". Для этого вам нужно вернуть два различных значения, чтобы вы могли создать класс контейнера:
public class FileReturn
{
public string FileName;
public bool IsSelected;
}
...
public FileReturn SelectAFile()
{
FileReturn result = new FileReturn();
...
result.FileName = myOpenFileDialog.FileName;
result.IsSelected = true;
return result;
}
Но это громоздко использовать:
string fileName;
FileReturn fr = SelectAFile();
if (fr.IsSelected)
{
fileName = fr.FileName;
...
Вместо этого вы можете использовать параметр out для возврата имени файла:
public bool SelectAFile(out fileName)
{
...
fileName = myOpenFileDialog.FileName;
return true;
}
Тогда он чище в использовании:
string fileName;
if (SelectAFile(out fileName))
{
...