我在 C# 中有帶有虛擬方法的類,例如:
public class Car
{
public virtual CarModel Run()
{
return new CarModel();
}
}
從類繼承的第二個Car類:
public class CarFiat : Car
{
public async override Task<CarModel> Run()
{
var carModel = base.Run();
await MeasureSpeed();
return carModel;
}
private async Task<string> MeasureSpeed()
{
return await Task.FromResult("50");
}
}
現在我收到錯誤:Return type must be CarModel to match overridden member Car.Run()
當我從類中洗掉它await, async時它可以作業,但我不能在其中呼叫異步方法:TaskRunCarFiat
//public async override Task<CarModel> Run()
public override CarModel Run()
{
var carModel = base.Run();
//await MeasureSpeed();
return carModel;
}
uj5u.com熱心網友回復:
您將不得不修改您的基類以回傳Task<CarModel>。然后,您可以使用Task.FromResult在您的基地同步回傳。
public class Car
{
public virtual Task<CarModel> Run()
{
return Task.FromResult(new CarModel());
}
}
如果上述方法不可行,您可以通過異步進行同步,但不推薦https://stackoverflow.com/a/9343733/1020941
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/432512.html
上一篇:用普通的舊資料結構繼承
