如何避免此警告
warning CS8602: Dereference of a possibly null reference
代码:
public async Task<IEnumerable<T>> ExecuteQuery<T>(string commandText, string ctx, CancellationToken cancellationToken, CommandType commandType = CommandType.Text, object? paramSet = null)
{
var dtsrc = CheckConnectionToDbServer(ctx, cancellationToken);
//if (dtsrc == null) { _logger.LogTrace($"{methodName}: No datasource!"); return 0; }
var con = dtsrc.OpenConnection();//<---?
IEnumerable<T> result2 = await con.QueryAsync<T>(commandText, paramSet, commandType: commandType).ConfigureAwait(false);
return result2;
}
--
如果dtsrc
是空的,那么con
也是空的,我不能从函数中返回Task<IEnumerable<T>>
.如何修复它?
第二个函数:在没有连接的情况下如何返回NULL或类似的东西?
public async Task<T> ExecuteScalarQuery<T>(string commandText, string ctx, CancellationToken cancellationToken, CommandType commandType = CommandType.Text, object? paramSet = null)
{
string methodName = nameof(ExecuteScalarQuery);
_logger.LogTrace($"{methodName}: {ctx}");
var dtsrc = CheckConnectionToDbServer(ctx, cancellationToken);
if (dtsrc == null)
{
_logger.LogTrace($"{methodName}: No datasource!");
//return // -<---???
}
var con = dtsrc.OpenConnection();
return await con.QuerySingleAsync<T>(commandText, paramSet, commandType: commandType).ConfigureAwait(false);
}