Обработка содержимого в ApiClient [дубликат]

Для узла js я использовал этот код

const Storage = require('@google-cloud/storage');
const storage = new Storage({projectId: 'PROJECT_ID', keyFilename: 'D:\\keyFileName.json'});
const bucket = storage.bucket('project.appspot.com'); //gs://project.appspot.com
bucket.getFiles().then(results => {
    const files = results[0];
    console.log('Total files:', files.length);
    files.forEach(file => {
      file.download({destination: `D:\\${file}`}).catch(error => console.log('Error: ', error))
    });
}).catch(err => {
    console.error('ERROR:', err);
  });
453
задан 6 revs, 3 users 71% 5 February 2010 в 15:17
поделиться

11 ответов

Два варианта:

  • Возврат default(T), что означает, что вы вернете null, если T - ссылочный тип (или тип значения с нулевым значением), 0 для int, '\ 0 'для char и т. д.
  • Ограничьте T ссылочным типом с ограничением where T : class и затем верните нуль как обычно
791
ответ дан Jon Skeet 5 September 2018 в 11:05
поделиться

Вы можете просто отрегулировать свои ограничения:

where T : class

Тогда возврат null разрешен.

23
ответ дан 2 revs 5 September 2018 в 11:05
поделиться

Возьмите рекомендацию об ошибке ... и пользователь default(T) или new T.

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

В противном случае потенциально рассмотрите выходной параметр для «match found».

1
ответ дан 2 revs, 2 users 80% 5 September 2018 в 11:05
поделиться
  1. Если у вас есть объект, тогда вам нужно указать тип
    return (T)(object)(employee);
    
  2. , если вам нужно вернуть значение null.
    return default(T);
    
6
ответ дан 2 revs, 2 users 86%user725388 5 September 2018 в 11:05
поделиться

Ниже приведены два варианта, которые вы можете использовать

return default(T);

или

where T : class, IThing
 return null;
2
ответ дан 3 revs, 3 users 82% 5 September 2018 в 11:05
поделиться

Другим вариантом было бы добавить это в конец вашего объявления:

    where T : class
    where T: IList

Таким образом, он позволит вам вернуть null.

5
ответ дан BFree 5 September 2018 в 11:05
поделиться

решение TheSoftwareJedi работает,

также вы можете его заархивировать с помощью пары значений и типов с нулевым значением:

static T? FindThing<T>(IList collection, int id) where T : struct, IThing
{
    foreach T thing in collecion
    {
        if (thing.Id == id)
            return thing;
    }
    return null;
}
2
ответ дан devi 5 September 2018 в 11:05
поделиться

Другая альтернатива двум ответам, представленным выше. Если вы измените свой тип возврата на object, вы можете вернуть null, а в то же время включить ненулевой возврат.

static object FindThing<T>(IList collection, int id)
{
    foreach T thing in collecion
    {
        if (thing.Id == id)
            return (T) thing;
    }
    return null;  // allowed now
}
0
ответ дан Jeson Martajaya 5 September 2018 в 11:05
поделиться

Вот рабочий пример для возвращаемых значений Nullable Enum:

public static TEnum? ParseOptional<TEnum>(this string value) where TEnum : struct
{
    return value == null ? (TEnum?)null : (TEnum) Enum.Parse(typeof(TEnum), value);
}
1
ответ дан Luke 5 September 2018 в 11:05
поделиться

Добавьте ограничение класса в качестве первого ограничения для вашего общего типа.

static T FindThing<T>(IList collection, int id) where T : class, IThing, new()
10
ответ дан Min 5 September 2018 в 11:05
поделиться
return default(T);
66
ответ дан Ricardo Villamil 5 September 2018 в 11:05
поделиться
Другие вопросы по тегам:

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