C#: Никакое неявное преобразование между 'лямбда-выражением' и 'лямбда-выражением'? [дубликат]

Чтобы открыть (), вам необходимо указать полный путь к файлу cookie.

В противном случае вы просто проверяете текущую рабочую директорию, в которой, очевидно, нет этого файла, поскольку она находится в папке cookie.

Я думаю, что следующий фрагмент кода должен помочь прояснить ситуацию:

full_path = os.path.join(os.getcwd(), "cookies", f)
cookies = pickle.load(open(full_path , "rb"))
37
задан Mr Lister 2 May 2012 в 16:21
поделиться

1 ответ

Тип условного выражения должен быть выведен в целом - и лямбда-выражения всегда должны преобразовываться в определенного делегата или тип дерева выражений.

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

бросок А в одном из ответвлений состоял бы достаточно в том хотя:

protected override Func<Stream> GetStream()
{
    return someBool
        ? (Func<Stream>)
          (() => EmbeddedResourceExtractor.GetFile("SomeFile1.ext"))
        : () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}

фиксация Sergio (теперь удаленный, но включенный ниже) будет работать , если Вы были рады оценить someBool в то время, когда функция вызвана:

protected override Func<Stream> GetStream()
{
    return () => someBool
          ? EmbeddedResourceExtractor.GetFile("SomeFile1.ext")
          : EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}

В зависимости от синхронизации, существуют все виды различных способов зафиксировать пример, который Вы на самом деле дали, например,

protected override Func<Stream> GetStream()
{
    string name = someBool ? "SomeFile1.ext" : "SomeFile2.ext";
    return () => EmbeddedResourceExtractor.GetFile(name);
}

я предполагаю, что Ваш реальный код более сложен все же.

Это - позор до некоторой степени, что вывод типа C# не может быть более мощным - но это уже довольно сложно.

49
ответ дан 27 November 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: