c# - 调用异步方法时对象引用未设置到对象的实例

标签 c#

Twitter 不通过其 REST API 提供用户生日。因此,我准备了一个可为 null 的 DateTime 属性。

我还为所有社交网络服务准备了一个接口(interface)。其中大部分是异步任务方法。

但我无法传递此错误:对象引用未设置为对象的实例,即使我没有使用该对象。

接口(interface)方法 GetUserBirthDayAsync 为 Twitter 服务实现如下:

public Task<DateTime?> GetUserBirthDayAsync(){
    return null; // because twitter does not provide user birthday
}

这就是我使用该方法的方式:

DateTime? BirthDate = await socialNetworkService.GetUserBirthDayAsync();

将值设置为 BirthDate 变量时发生错误。

发生了什么事?是什么导致了异常?

最佳答案

试试这个:

public Task<DateTime?> GetUserBirthDayAsync()
{
    return Task.Run(() => (DateTime?)null);
}

或者,更好的方法:

public Task<DateTime?> GetUserBirthDayAsync()
{
    return Task.FromResult<DateTime?>(null);
}

当您只返回 null 时,这意味着您的任务是 null,而不是异步方法的结果。

关于c# - 调用异步方法时对象引用未设置到对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011951/

相关文章:

c# - 带有可选参数的发射函数

c# - 如何使用 IDataErrorInfo 从 ViewModel 强制更新 View 的验证错误?

c# - 如何将 IHttpActionResult(内部带有 JSON)转换为我可以使用 LINQ 处理的对象

c# - 在打开的cmd中运行命令

c# - 如何在 C# 中从 IMDB 获取信息

c# - 为什么 WinDbg 显示 C# 类和结构的大小相同?

c# - 启用 GZIP 以在客户端调用 WCF 服务

c# - DataTable与Sql server之间的数据传输

c# - 为什么 SQL Server 数据库用户写入错误的架构?

c# - 在 C# 中,如何处理 Oracle Float 类型?接收错误 "Arithmetic operation resulted in an overflow"