C# 8.0 引入了可为空引用类型和不可为空引用类型。当你需要给你或者团队更严格的要求时,可能需要定义这部分的警告和错误级别。...本文将介绍 C# 可空引用类型部分的警告和错误提示,便于进行个人项目或者团队项目的配置。...开启可空引用类型以及配置警告和错误 本文的内容本身没什么意义,但如果你试图进行一些团队配置,那么本文的示例可能能带来一些帮助。...C# 8.0 如何在项目中开启可空引用类型的支持 - 吕毅 C# 可空引用类型 NullableReferenceTypes 更强制的约束:将警告改为错误 WarningsAsErrors - 吕毅 警告和错误...GetText() { return null; } CS8609 返回类型中引用类型的为 Null 性与重写成员不匹配。
迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference) 发布于 2017-12-18 21:41...Kotlin 和 Swift 自诞生之日起引用类型就不能为空,C# 背着历史的包袱直到 8.0 才开始这么做…… ---- 安装可空引用类型预览包 现在 C#8.0 还没有发布,但微软已经提供了预览的扩展包...---- 体验可空引用类型的作用 现在,再写一个新类的时候,Visual Studio 会为我们提示非空引用类型未初始化,并给出建议。 ? ? 采纳它的建议,生成构造函数: ? ?...使此属性的类型变为可空引用类型。 ? 这时,如果在非 null 的地方使用此属性,则会要求判空。 ?...---- 丢不掉的兼容性包袱 由于有兼容性的包袱(至少得让你写了数月几年的项目编译通过吧),所以 C#8.0 的可空引用类型仅仅是“契约”的作用,并不能在编译级别阻止对非空引用类型的 null 赋值。
迫不及待地体验了一把 C#8.0 中的可空引用类型(Nullable Reference) 发布于 2017-12-18 13:41...Kotlin 和 Swift 自诞生之日起引用类型就不能为空,C# 背着历史的包袱直到 8.0 才开始这么做…… ---- 安装可空引用类型预览包 现在 C#8.0 还没有发布,但微软已经提供了预览的扩展包...---- 体验可空引用类型的作用 现在,再写一个新类的时候,Visual Studio 会为我们提示非空引用类型未初始化,并给出建议。 ? ? 采纳它的建议,生成构造函数: ? ?...使此属性的类型变为可空引用类型。 ? 这时,如果在非 null 的地方使用此属性,则会要求判空。 ?...---- 丢不掉的兼容性包袱 由于有兼容性的包袱(至少得让你写了数月几年的项目编译通过吧),所以 C#8.0 的可空引用类型仅仅是“契约”的作用,并不能在编译级别阻止对非空引用类型的 null 赋值。
0x00 hello world 最近在一个新项目中,尝试了vue2+typescript的组合,又又又碰到一个问题:定义了一个自定义控件Foo.vue,在控件中定义一个方法Bar(),使用自定义控件的时候...$refs.foo.Bar()调用方法,当然是可以成功调用的,但是在TypeScript中,他会报错。...0x03 总结 总结下来就是: 在JavaScript中,一个东西(函数?类型?)...的类型有两种,一种是他本来的类型,一种是实例化之后的实例类型,这两个类型有可能是不一样的; Vue的类型和Vue实例化的后的类型不是同一个类型,Vue的类型是VueConstructor类型,实例化后的类型是...0x04 特别感谢 感谢TDP成员若海 在这个过程中给我的无私帮助! 腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。
在源代码文件中开启可空引用类型的支持 除了在项目文件中全局开启可空引用类型的支持,也可以在 C# 源代码文件中覆盖全局的设定。...#nullable enable: 在源代码中启用可空引用类型并给出警告。 #nullable disable: 在源代码中禁用可空引用类型并关闭警告。...#nullable restore: 还原这段代码中可空引用类型和可空警告。 #nullable disable warnings: 在源代码中禁用可空警告。...#nullable enable warnings: 在源代码中启用可空警告。 #nullable restore warnings: 还原这段代码中可空警告。...#nullable disable annotations: 在源代码中禁用可空引用类型。 #nullable enable annotations: 在源代码中启用用可空引用类型。
检查数据库和迁移文件时发现Address这个字段被意外设置成nullable: false,而其它的字段却正常,按理来说对于string类型的属性,EFCore在codefirst模式下应该映射为可空类型...令人费解,在多次比对代码之后,发现是.csproj文件中的这一行配置导致的 enable 原因分析 C# 8 引入了一项名为可为 null 引用类型 (NRT)...通过查看EF文档了解到,可为空引用类型通过以下方式影响 EF Core 的行为: 如果禁用可为空引用类型,则按约定将具有 .NET 引用类型的所有属性配置为可选 (例如 string ) 。...换而言之,启用了该功能后,把原本《引用类型可为空》的这个传统约定,更改称为了《引用类型是否可为空,是通过?语法来表明的》,实体中string类型的属性在C#中作为引用类型,自然而然地受到了这个影响。...之后应留意项目的"NRT"功能是否开启,在解决方案.csproj文件中用如下方式关闭 disable 留意实体类中是否有代码段被标识"NRT"功能开启 从 .NET
背景 对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。...但在 Unity 项目里面,你可能要改变这一观念——因为 Unity 项目里面实际上并不存在 sln 和 csproj 文件。...开发 Unity C# 脚本,说说根目录的那些 sln 和 csproj 文件 - walterlv 如何引用 dll 或者安装 NuGet 包 在 Unity 中,是给 C# 脚本引用 dll 或者安装...之后,你就能使用诸如 HttpClient 这些类型。 你也可以使用同样的方式引用其他的 dll,每行一个。...因为 Unity 编辑器生成了 sln 和 csproj,所以在 Visual Studio 里安装也是可以的,不过这里的安装并不会真实生效,而是我们在 Unity 项目的根目录的 Packages 文件夹中能找到我们安装的
对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。...那我们在根目录看到的那些 sln 和 csproj 文件是什么? 那只是 Unity 编辑器为了让你方便写 C# 代码临时生成给你用的。...而如果指定了 Visual Studio 作为外部脚本编辑器,那么再从 Unity 中打开 C# 项目时,将会生成 sln 和 csproj 文件,然后调用 Visual Studio 打开生成的 sln...这样的设计,有好处也有坏处: 有了 sln 和 csproj,Visual Studio 将能充分运行代码分析器,可以在类与其他符号之间跳转,可以有智能感知提示,可以实时发现编写中的代码错误(甚至是引用错误...真正在编译完成放到游戏中运行的,是 Assets 文件夹中的文件。而外面的 sln 和 csproj 文件,应该加入到 .gitignore 文件中,从版本管理中忽略掉。
3、如果csproj中启用了enable,编译器会自动隐式增加对于System、System.Linq等常用命名空间的引入,不同各类型项目引入的命名空间也不一样。...return "Id:" + this.Id + ",Name:" + this.Name + ",Birthday:" + this.Birthday.ToString(); } } 可空的引用类型...如果不注意检查引用类型变量是否可空,就有可能造成程序中出现NullReferenceException异常。...1、csproj中enable启用可空引用类型检查。 2、在引用类型后添加“?”修饰符来声明这个类型是可空的。对于没有添加“?”...,也可以在访问可空的变量、成员的时候加上!
在设计一个关卡时,删除对象是很常见的,如果对象已经被添加到数组中,就会产生麻烦。丢失的对象会产生空指针,这些空指针将在游戏模式下生成异常。 ?...因为我们将在Unity编辑器中使用这个属性,levelObjects数组可能还不存在,所以我们也必须检查这个。 ? 接下来,在编辑器文件夹中为GameLevel创建一个自定义检查器类。...首先循环遍历数组,然后仅计算空引用数。 ? 每当我们遇到一个空引用的时候都需要关闭它,方法就是通过移动数组的其余部分向上一个元素。我们可以调用System.Array.Copy来实现。...这可以通过从循环条件中数组的长度减去迄今为止遇到的空引用的数量来实现。同样地,我们不必复制数组末尾的冗余元素,直接通过减去要复制的空引用数来避免。 ?...通过使用标签调用GUILayout.Button,在我们的自定义检查器中的错误消息下方添加一个按钮。
除此之外,在开发过程中如果需要添加某种类型的文件(比如各种类型的配置文件、MVC的视图文件等),我们也可以利用该命令来完成,通过这种方式添加的文件具有预定义的初始内容。....细心的读者可以从图2中看到dotnet new命令具有一个--type参数,该参数具有三个预定义的选项(project、item和other),其中前两个分别对应着Project和Item这两种模板类型...如果这些预定义的脚手架模板不能满足我们的需求,我们还可以创建自定义的Project或者Item模板,至于自定义模板该如何定义,有兴趣的读者朋友可以参考.NET Core官方文档。...对于传统的.NET Framework应用来说,即使是一个空的C#项目,定义该项目的.csproj文件在内容和结构上都是很复杂的,因为这个.csproj文件的结构并不是面向开发者设计的,我们也不会直接编辑这个文件...这个helloworld.csproj文件实际上只定义了两个属性,分别是通过和节点表示的编译输出类型和目标框架。
如果需要配置不同的类库输出到不同的位置,也可以自定义配置输出路径实现。 查看项目属性,【生成】-->“输出”-->“输出路径”中输入自定义目录或者点击【浏览】按钮选择一个目录。 ? 填写后,保存项目。...项目右键,【编辑项目文件】,csproj文件中自动增加了如下配置,其中 Condition 后面的表达式即是编译条件。OutputPath即是自定义输出目录。...添加完后解决方案中仅有 .NET Standard2.0 中增加了引用。.net40 与 .net45 中没有引用。 ? 添加完后 csproj文件 会多出如下配置 ?...除此之外,开发者可以通过配置自定义常量的方式达到与.NET目标框架中预定义的预处理符号相同的功能。...在编写C#代码时能够自动智能感知到自定义的常量 ? 上面是定义的统一的全局变量,也可以在每个条件编译分组中自定义常量 <!
h1 { color: red; } 然后将demo.css引用添加到page1.cshtml中。...如果我们在应用程序未手动通过webHostBuilder.UseWebRoot("your web root path");指定自定义的Web Root路径,那么将会默认指定为wwwroot文件夹。...这也就是为什么在启动类Startup的Configure方法中需要指定app.UseStaticFiles();来启用StaticFileMiddleware中间件。...在ASP.NET Core 官方文档中Static files in ASP.NET Core,介绍了如何访问自定义目录的静态资源文件。...Embedded Resource 一个程序集主要由两种类型的文件构成,它们分别是承载IL代码的托管模块文件和编译时内嵌的资源文件。那在.NET Core中如何定义内嵌资源呢?
导出支持列头自定义处理以便支持多语言等场景; 导出支持文本自定义过滤或处理; 导入支持中间空行自动跳过; 导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注; ?...,比如int、double等不可为空类型自动识别,无需额外设置Required 【导入】修改Excel模板的Sheet名称 【导入】支持导入表头位置设置,默认为1 【导入】支持列乱序(导入模板的列序号不再需要固定...) 【导入】支持列索引设置 【导入】支持将导入的Excel进行错误标注,支持多个错误 【导入】加强对基础类型和可为空类型的支持 【EPPlus】由于EPPlus.Core已经不维护,将EPPlus的包从...EPPlus.Core改为EPPlus, 2019.9.11 【导入】导入支持自动去除前后空格,默认启用,可以针对列进行关闭,具体见AutoTrim设置 【导入】导入Dto的字段允许不设置ImporterHeader...AutoTrim:自动过滤空格,默认启用。 FixAllSpace:处理掉所有的空格,包括中间空格。默认false。 ColumnIndex:列索引,一般不建议设置。
文章目录 一、报错信息 二、解决方案 三、Visual Studio 2019 中运行 Unity C# 脚本需要的组件 1、.NET 桌面开发 2、使用 Unity 的游戏开发 一、报错信息 --...-- Visual Studio 2019 中运行 Unity C# 脚本时报如下错误 : 迁移报告 - 概述 项目 路径 错误 警告 消息 Assembly-CSharp Assembly-CSharp.csproj...1 0 0 解决方案和项目 Assembly-CSharp 消息 Assembly-CSharp.csproj: 找不到此项目类型所基于的应用程序。...脚本需要的组件 ---- 使用 Visual Studio 2019 中运行 Unity C# 脚本需要如下两个组件 : 1、.NET 桌面开发 .NET 桌面开发 : 2、使用 Unity 的游戏开发...使用 Unity 的游戏开发 : 上面两个组件一定要在 Visual Studio Installer 中提前安装 , 否则无法在 VS 中运行 Unity 的 C# 脚本 , 或者没有代码提示
当它被启用时,你将看到你放在场景中的光照物体的影响。启用该按钮将允许你在发布游戏时看到游戏中的光照。 ...如果你在压缩后更新了资源,你将不得不重新压缩。你也可以在导入的时候启用纹理压缩着可以在 Unity->Preferences菜单中设置。 ...有两种不同类型的属性:值(Values)和引用(References)。 下图中是一个具有音频源 (Audio Source)组件的空游戏物体。在检视面板中所有音频源的值都是缺省的。...现在一个音效文件在音频剪辑属性中被引用 组件可包含任何其它类型组件的引用,文件或游戏物体。你只需拖动适当的引用到这个属性上。引用类型是非常有用和强大的,尤其是在使用脚本时。...预设(Prefab) 预设是一个存储在工程视图中可重用的游戏物体。预设可以被插入到任意数量的场景中,并可多次出现在同一场景中。当你添加一个预设到场景中,你就创建了一个它的实例。
如果你是在2D的环境下工作的话,你可以忽略掉三维中的一维,有一些2D的游戏对象,比如UI这种,它会有一个叫做Rect Transform的组件。它其实是一种特殊的Transform 组件。...2.1 定义组件类型 一个空的文件并不是一个有效的脚本。它其实需要包含我们想要的clock的组件才行。...想象一下,如果两个人都写了一个Clock的类,那么我在引用Clock的话,就不知道用的是哪个。所以我们可以在类前加上命名空间来区分不同的类,这样就能区分想用的是哪个类了。...要访问真正的系统时间,我们需要使用DataTime结构,这个不是Unity内部的类型,它是C#语言的类型,在System的命名空间下。也是.NET framework的一部分。...认识和了解自定义组件和Unity代码的一些基础知识。 所以,教程完结之后,能否真的做出时钟demo不重要,重要的是,是否掌握了一些Unity的基础知识。
在 MRTK 2.x 中,BoundsControl 主要是通过使用配置 ScriptableObjects 在运行时生成的。...在 MRTK3 中,BoundsControl 的设置和自定义已显著简化。 边界视觉对象和句柄只是 BoundsControl 在运行时实例化的可自定义预制件。...如果未自动检测到可交互对象,则可以在 BoundsControl 检查器中指定连接。...在“Unity”模式下,对象的所有轴一起缩放,从而保持纵横比和外观。 非均匀缩放允许单独缩放对象的每个轴。...如果为空,它将自动设置为此边界控制所在的转换。 HandlesActive 应该有可见的句柄吗? EnabledHandles 哪种类型的句柄应该是可见的?
相反,我们定义了称为Clock的通用类或类型。一旦建立,我们就可以在Unity中创建多个这样的组件。 在C#中,我们首先声明要定义一个类,然后定义其名称,从而定义Clock类型。...我们的自定义组件类型必须继承Unity的MonoBehaviour类型,并继承其数据和功能。 mono-behavior是什么意思? 这表示我们可以对自己的组件进行编程,以向游戏对象添加自定义行为。...(Clock 游戏对象 以及Clock组件) 请注意,我的教程中的大多数代码类型都链接到在线文档。例如,MonoBehaviour是一个链接,可带你进入该类型的Unity在线脚本API页面。...在本教程中,我们唯一的C#代码是Clock,因此没有理由公开其内容。 字段可序列化后,Unity将对其进行检测并将其显示在Clock游戏对象的Clock组件的检查器窗口中。 ?...我们必须声明结果的类型(就好像它是一个字段一样),或者写空来表明没有结果。在我们的例子中,我们只想执行一些代码而不提供结果值,因此我们使用后者。 ? 我们也不需要任何输入数据。
接下来我看看表的定义: -- Companies表: exec sp_help 'Companies'; 其中Name字段是可空的并且长度是-1也就是nvarchar(Max)..../LearnEf.Domains/LearnEf.Domains.csproj ../LearnEf.Data/LearnEf.Data.csproj 为测试项目添加该项目引用: cd .....x.Owner) .HasForeignKey(x => x.CompanyId); } 这里面呢, 这个Owner对于Company 来说 是可空的...如果针对Owner想让Company是可空的, 那么CompanyId的类型就应该设置成int?....查询中映射关联数据. 使用Select可以返回匿名类, 里面可以自定义属性. 这个匿名类只在方法内有效. 看下SQL: 可以看到SQL中只Select了匿名类里面需要的字段.
领取专属 10元无门槛券
手把手带您无忧上云