如何解决为什么构造函数中的空字符串参数不会引发异常?
我查看了但无法弄清楚为什么在启用了null引用类型的情况下在构造函数中为字符串参数传递null时为什么没有得到异常。
构造函数参数不会被视为不可为空吗?
这是我的构造函数:
public ApiClient( string baseUrl,string authorizationToken ) {
string testString = null;
_apiClientBaseUrl = baseUrl ?? throw new ArgumentNullException( $"{nameof(baseUrl)} cannot be null" );
_authorizationToken = authorizationToken ?? throw new ArgumentNullException( $"{nameof(authorizationToken)} cannot be null" );
}
我确实收到string testString = null;
行的错误。
如果删除编码的null测试,则可以为2个属性传递null,并且不会出现任何错误。该对象将实例化就好。
我正在一个.NET Core 3.1项目中,该文件位于.csproj文件中:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<Nullable>enable</Nullable>
<WarningsAsErrors>CS8600;CS8602;CS8603;CS8625</WarningsAsErrors>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
解决方法
可空引用类型仅作为docs状态用于编译时静态分析:
可空引用类型不是新的类类型,而是对现有引用类型的注释。编译器使用这些注释来帮助您查找代码中潜在的空引用错误。 不可空引用类型和可空引用类型之间没有运行时差异。编译器不会为非空引用类型添加任何运行时检查。好处在于编译时分析。编译器会生成警告,以帮助您发现并修复代码中潜在的空错误。您声明您的意图,当代码违反该意图时,编译器会警告您。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。