Для узла 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);
});
Два варианта:
default(T)
, что означает, что вы вернете null
, если T - ссылочный тип (или тип значения с нулевым значением), 0 для int, '\ 0 'для char и т. д. where T : class
и затем верните нуль как обычно Вы можете просто отрегулировать свои ограничения:
where T : class
Тогда возврат null разрешен.
Возьмите рекомендацию об ошибке ... и пользователь default(T)
или new T
.
Вам нужно будет добавить сравнение в свой код, чтобы убедиться, что это действительное совпадение, если вы идете по этому маршруту.
В противном случае потенциально рассмотрите выходной параметр для «match found».
return (T)(object)(employee);
return default(T);
Ниже приведены два варианта, которые вы можете использовать
return default(T);
или
where T : class, IThing
return null;
Другим вариантом было бы добавить это в конец вашего объявления:
where T : class
where T: IList
Таким образом, он позволит вам вернуть null.
решение 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;
}
Другая альтернатива двум ответам, представленным выше. Если вы измените свой тип возврата на 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
}
Вот рабочий пример для возвращаемых значений Nullable Enum:
public static TEnum? ParseOptional<TEnum>(this string value) where TEnum : struct
{
return value == null ? (TEnum?)null : (TEnum) Enum.Parse(typeof(TEnum), value);
}
Добавьте ограничение класса в качестве первого ограничения для вашего общего типа.
static T FindThing<T>(IList collection, int id) where T : class, IThing, new()