title author date CreateTime categories
C# 在 8.0 对比 string 和 string? 的类型
lindexi
2019-04-16 10:16:56 +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. VS2012 C#使用/配置Log4Net
  2. 用css改变鼠标选中文字的样式
  3. thunkify和co的邂逅
  4. [.net 面向对象编程基础] (11) 面向对象三大特性——封装
  5. VMware的使用
  6. mysql连接超时
  7. Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码
  8. C# String.Format大全
  9. C#- FTP递归下载文件
  10. pci转并口卡的安装使用
  11. bzoj 1010 [HNOI2008]玩具装箱toy(DP的斜率优化)
  12. /proc/kcore失效,调试其文件系统相关模块,使重新正常工作
  13. VR全景:电商巨头的角逐
  14. php中查询mysql如何在IN array中用
  15. Django----模板层
  16. web.xml 详细介绍
  17. 信用评分卡 (part 2of 7)
  18. 部署WEB项目到服务器(四)部署WEB项目Forum到linux服务器(Ubuntu)详解
  19. Hibernate 常用jar包 分析
  20. 云serverlinux又一次挂载指定文件夹(非扩充)

热门文章

  1. 洛谷 P1941 飞扬的小鸟 (NOIP 2014)
  2. springboot让内置tomcat失效
  3. 笔试中sizeof求字节数的问题
  4. 《DSP using MATLAB》Problem 8.1
  5. JSTL(使用if-else实现分页)
  6. ROS多线程编程
  7. Spring注解驱动开发(七)-----servlet3.0、springmvc
  8. JMETER远程运行_多机联合负载
  9. 两周的业余时间,写了个简单的shell
  10. 免费提取百度文库 doc 文件