+-------------------+-----------------+------------------------------+ | Greedy quantifier | Lazy quantifier | Description | +-------------------+-----------------+------------------------------+ | * | *? | Star Quantifier: 0 or more | | + | +? | Plus Quantifier: 1 or more | | ? | ?? | Optional Quantifier: 0 or 1 | | {n} | {n}? | Quantifier: exactly n | | {n,} | {n,}? | Quantifier: n or more | | {n,m} | {n,m}? | Quantifier: between n and m | +-------------------+-----------------+------------------------------+
Добавить? к квантификатору, чтобы сделать его нелогичным, ленивым.
blockquote>Пример: тестовая строка: stackoverflow greedy reg expression :
s.*o
output: stackoverflow ] lazy reg expression :s.*?o
output: stackoverflow
В зависимости от того, что вы пытаетесь сделать, вы можете блокировать GetIdList (). Результат (как правило, плохая идея, но трудно сказать контекст) или использовать тестовую среду, поддерживающую методы асинхронного тестирования, и метод test do var results = wait GetIdList ();
Вам также нужно сделать TestGetMethod async
и приложить ожидающий перед GetIdList();
разворот задачи до List<int>
, поэтому, если ваша вспомогательная функция возвращается. Задайте, чтобы вы ожидали, когда вы вызываете функцию async
.
public Task<List<int>> TestGetMethod()
{
return GetIdList();
}
async Task<List<int>> GetIdList()
{
using (HttpClient proxy = new HttpClient())
{
string response = await proxy.GetStringAsync("www.test.com");
List<int> idList = JsonConvert.DeserializeObject<List<int>>();
return idList;
}
}
Другая опция
public async void TestGetMethod(List<int> results)
{
results = await GetIdList(); // await will unwrap the List<int>
}
Основная проблема с вашим примером в том, что вы не можете неявно конвертировать Task<T>
типы возврата в базовый тип T
. Вам нужно использовать свойство Task.Result. Обратите внимание, что Task.Result будет блокировать асинхронный код и его следует использовать осторожно.
Попробуйте это вместо:
public List<int> TestGetMethod()
{
return GetIdList().Result;
}