sách gpt4 ăn đã đi

c# - 为什么调用不明确? 'Task.Run(Action)' 和 'Task.Run(Func)'

In lại 作者:IT王子 更新时间:2023-10-29 04:19:17 30 4
mua khóa gpt4 giày nike

Hãy xem xét đoạn mã sau:

public void CacheData()
{
Task.Run((Action)CacheExternalData);
Task.Run(() => CacheExternalData());

Task.Run(CacheExternalDataTask);

Task.Run(CacheExternalData);
}

public Task CacheExternalDataTask()
{
// Long running code
return Task.FromResult("Data");
}

public void CacheExternalData()
{
// Long running code
}

Tại sao Task.Run(CacheExternalData) 不明确? Task.Run(CacheExternalDataTask) KHÔNG?

khi sử dụng CacheExternalData gọi Task.Run 时,我本以为编译器很清楚该方法返回一个Nhiệm vụ 并且它应该解析为 Hoạt động?

câu trả lời hay nhất

应该很清楚,但是语言规范从未说过不匹配的返回类型会在重载解析期间产生任何影响。因此,没有规则说更喜欢 Hoạt độnghiện hữu Func .如果Hoạt động会被选中,当然,它会起作用。如果Func会被选中,那么肯定会出现错误。但无论选择哪一个,重载解析都必须成功,并且没有考虑到这一点。

这应该是固定的 with new overload resolution in C# 7.3 .

关于c# - 为什么调用不明确? 'Task.Run(Action)' 和 'Task.Run(Func)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51837722/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress