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 新的方式

2019-11-29-C#-在-8.0-对比-string-和-string_-的类型的更多相关文章

  1. C# 在 8.0 对比 string 和 string? 的类型

    在 C# 8.0 的时候提供了可空字符串的判断,但是可空字符串和字符串的类型是不是不同的? 打开 VisualStudio 2019 这时就不能再使用 VisualStudio 2017 因为不支持 ...

  2. 2019.11.29 Mysql的数据操作

    为名为name的表增加数据(插入所有字段) insert into name values(1,‘张三’,‘男’,20); 为名为name的表增加数据(插入部分字段) insert into name ...

  3. 2019.11.29 SAP SMTP郵件服務器配置 發送端 QQ郵箱

    今天群裏的小夥伴問了如何配置郵件的問題,隨自己在sap裏面配置了一個 1.    RZ10配置參數 a)       参数配置前,先导入激活版本 执行完毕后返回 b)      输入参数文件DEFAU ...

  4. pycharm+anaconda在Mac上的配置方法 2019.11.29

    内心os: 听人说,写blog是加分项,那他就不是浪费时间的事儿了呗 毕竟自己菜还是留下来东西来自己欣赏吧 Mac小电脑上进行python数据开发环境的配置 首先下载Anaconda,一个超好用的数据 ...

  5. Supervision meeting notes 2019/11/29

    topic 分支:  1. subgraph/subsequence mining Wang Jin, routine behavior/ motif. Philippe Fournier Viger ...

  6. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  7. string 与char* char[]之间的转换 2015-04-09 11:30 29人阅读 评论(0) 收藏

    1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...

  8. Alpha冲刺(6/10)——2019.4.29

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(6/10)--2019.4.29 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  9. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)

    更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...

  10. 2019.11.9 csp-s 考前模拟

    2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...

随机推荐

  1. vue项目使用cropperjs制作图片剪裁,压缩组件

    项目中裁剪图片效果 代码部分:(将上传部分 封装成一个组件直接调用当前组件) <template> <div id="demo"> <!-- 遮罩层 ...

  2. TCP定时器 之 坚持定时器

    坚持定时器在接收方通告接收窗口为0,阻止发送端继续发送数据时设定. 由于连接接收端的发送窗口通告不可靠(只有数据才会确认,ACK不会确认),如果一个确认丢失了,双方就有可能因为等待对方而使连接终止:接 ...

  3. SpringMvc 支持一下类型Serlvet 原生的 API 作为目标方法的参数

    /** * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型 * * HttpServletRequest * HttpServletResponse * HttpSes ...

  4. VS 2017 VC++项目出现 LNK1104 无法打开文件"libcmtd.lib" 的解决方法

    今天用VS 2017编译一个以前的VC++动态库项目,出现了一个链接器问题: LNK1104 无法打开文件"libcmtd.lib" . 操作系统版本为:Windows 10 18 ...

  5. kotlin之数组

    一.使用arrayOf函数定义可以存储任意值的数组 var arr1 = arrayOf(1,2,3,'a') println(arr1[3]) 二.使用arrayOfNulls函数定义数组 var ...

  6. OpenStack 制作image,启动VM,无console log

    OpenStack image 制作官方文档:https://docs.openstack.org/image-guide/create-images-manually.html 如果通过制作的镜像启 ...

  7. Python文件重命名代码

    import os def re_name(path): for file in os.listdir(path): file_path = os.path.join(path, file) # 判断 ...

  8. 【ABAP系列】SAP ABAP 关于FUNCTION-POOL的理解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 关于FUNCT ...

  9. noi.ac-CSP模拟Day5T1 组【二分图最大匹配】

    虽然是T3,但是想通了之后还是不难的. 数据规模也不大. 可以考虑先枚举一个班长,根据题意,和班长连边的学生就可以不用管,没有和班长连边的学生就要去找一个和班长连边的学生组队,如果所有没有和班长连边的 ...

  10. LPVOID 指针 转 int

    1 DWORD  WINAPI  SockUDP::RecvThread(LPVOID lparam){   //套接字  正确:int sock= *(int*)(lparam);   错误:int ...