You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用.NET 6.0 Uri构造函数时触发错误:参数转换与空值问题

问题分析与解决

错误原因

你想调用的是Uri(Uri baseUri, string? relativeUri)构造函数,但第一个参数传的是string类型的baseUrl,编译器会优先匹配第一个参数为string的Uri构造函数。

.NET里存在Uri(string uriString, bool dontEscape)这个构造函数,当你第二个参数传null时,编译器会尝试把null转换成bool(但bool是值类型,不允许为null),同时触发route可能为null的警告,这就是报错的根源。另外,Uri(string, string)这个重载要求第二个参数不能为null,所以也无法匹配。

解决方案

有两种简单可行的处理方式:

1. 先将baseUrl转为Uri类型(推荐)

这样能精准匹配到你想要的Uri(Uri, string?)构造函数,这个重载允许第二个参数为null,此时会直接返回baseUri:

Uri baseUri = new Uri("https://example.com");
string? route = null;
Uri test = new Uri(baseUri, route);

2. 处理route的null情况

如果不想提前转换baseUri,可以先判断route是否为空,再选择对应的构造函数:

string baseUrl = "https://example.com";
string? route = null;
Uri test = string.IsNullOrEmpty(route) ? new Uri(baseUrl) : new Uri(baseUrl, route);

内容的提问来源于stack exchange,提问作者Muleskinner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:32:35