title author date CreateTime categories
C# 在 8.0 对比 string 和 string? 的类型
lindexi
2019-11-29 8:59:0 +0800
2018-12-20 09:15:30 +0800
C#

在 C# 8.0 的时候提供了可空字符串的判断,但是可空字符串和字符串的类型是不是不同的?

打开 VisualStudio 2019 这时就不能再使用 VisualStudio 2017 因为不支持

然后创建一个 dotnet core 项目,打开项目文件添加下面代码

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<LangVersion>8.0</LangVersion>
<NullableReferenceTypes>true</NullableReferenceTypes>
</PropertyGroup> </Project>

先详细介绍每一句话的意思

第一句 OutputType 的意思是输出是什么,这里选 Exe 就是输出控制台

通过 TargetFramework 可以设置平台,更多可以设置请看 从以前的项目格式迁移到 VS2017 新项目格式

在 LangVersion 设置使用的语言版本,详细请看 VisualStudio 使用三个方法启动最新 C# 功能

最后通过 NullableReferenceTypes 开启可空类型的判断

现在开始试试之前的其他可空的方法,如下面代码

            Console.WriteLine(typeof(int).FullName);
Console.WriteLine(typeof(int?).FullName);

小伙伴都知道输出的 int 和 int? 是不同的

System.Int32
System.Nullable`1[[System.Int32, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]

但是如果是 string 和 string? 的比较呢?

判断 typeof(string) == typeof(string?) 是不是相同的?

            System.Console.WriteLine(typeof(string).FullName);
Console.WriteLine(typeof(string?).FullName);
Console.WriteLine(typeof(string) == typeof(string?));

其实在 C# 8.0 的 string? 是糖也就是实际不存在的,对于 string? 的类和 string 相同

System.String
System.String
True

VisualStudio 2019 尝试使用 C# 8.0 新的方式

最新文章

  1. IO流-----写到输出流
  2. window.print() 打印页面部分内容的方法
  3. java.lang.IllegalArgumentException: template not initialized; call afterPropertiesSet() before using
  4. 实现 像网易云音乐 播放列表那样的弹出型Dialog
  5. java设计模式--创建模式--工厂方法
  6. LeetCode OJ 11. Container With Most Water
  7. JS判断doctype文档模式-document.compatMode
  8. Angular.js学习笔记 (二)
  9. Java集合框架,未完
  10. Vue.js—实现图书管理系统
  11. Oracle索引详解
  12. BZOJ 4555: [Tjoi2016&amp;Heoi2016]求和 [分治FFT 组合计数 | 多项式求逆]
  13. 一个备份mysql 数据库的脚本
  14. 基于python的种子搜索网站-开发过程
  15. Cent os6.5 安装python3.2
  16. 使用 --image-repository 解决kubeadm 安装k8s 集群 谷歌镜像墙的问题
  17. codeforces 251 div2 D. Devu and his Brother 三分
  18. Java导出引用jar包的文件
  19. 1.Delphi Rest后台+MUI前台开发App前言
  20. rocketmq配置项说明(对应版本:4.0.0-incubating)

热门文章

  1. 【git】本地git bash连接远程库github
  2. ASP.NET图片防盗链(使用一般处理程序)
  3. Springboot2.x使用redis作为缓存
  4. leetcode 371两整数之和
  5. 保存json数据到本地和读取本地json数据
  6. pytest_1安装和启动
  7. 阶段3 2.Spring_05.基于XML的IOC的案例1_1 基于XML的IOC的案例-案例准备
  8. USACO4.1 Beef McNuggets【数学/结论】
  9. mysql——单表查询——其它整理示例01
  10. java 编码设计细节