使用ref前必须对变量赋值,out不用。 out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。 ...,必须对x和y赋值,否则会报错。 ...//y = x; //上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行 x = 1; y = 2; } static void refTest... //out使用前,变量可以不赋值 outTest(out a, out b); Console.WriteLine("a={0};b={1}",a,b); int c=11,d=22;...ref m, ref n); //上面这行会出错,ref使用前,变量必须赋值 int o=11,p=22; refTest(ref o, ref p); Console.WriteLine
其中,我们需要重点关注以下两个目录: MvcControllerWithContext:该目录下的模板为添加控制器时,选择基架项为【包含视图的 MVC5 控制器(使用Entity Framework)】...MvcView:该目录下的模板为添加控制器时,选择基架项为【包含视图的 MVC5 控制器(使用Entity Framework)】时生成增删改查视图的代码的T4模板。 然后,我们就开始生成之旅。...这里选择【包含视图的MVC5控制器(使用 Entity Framework)】。 添加控制器 ? 个人比较喜欢使用异步控制器操作。...q, int pageIndex = 1, int pageSize = 10) { var queryable = db.WeiChat_KeyWordTextContents.Include...在代码设计方面,本人现在更热衷于简单设计,轻架构,“简单”代码。
C++和C#中字符串的内存管理深度解析在编程世界中,字符串是一种基本的数据类型,它在各种应用中都有广泛的使用。...1.2 C在C#中,字符串是通过string类来表示的。...C++和C#字符串的差异在C++和C#中,字符串在内存中的表示和管理方式有所不同。下面我们用mermaid图来表示这种差异。...在C#中,string从托管堆中分配内存,这个堆由垃圾回收器管理。在C#中,string可能会使用字符串池,这可以避免存储重复的字符串,从而节省内存。...结论C++和C#在字符串的内存管理上有一些重要的差异,这些差异主要体现在修改性、内存分配和生命周期管理上。在选择使用哪种语言时,需要根据具体的应用需求来考虑。
Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库 在Windows中使用C#连接Mysql数据库比较简单,可以直接使用MySql.Data库,目前最新版本为:8.3.0...当然也可以结合MySql.Data和Dapper库一起使用,目前Dapper的最新版本为:2.1.35。...Dapper是一款轻量级ORM工具,是一个简单的.NET对象映射器,在速度上几乎与使用原始ADO.NET数据读取器的速度一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。...:mysql-installer-web-community-8.0.36.0.msi,并采用C# .Net WinForm窗体程序作为演示示例,我们展示如何使用Mysql.Data和Dapper连接MySql....msi数据库安装包之后,我们root账号的初始密码设置为123456,然后使用Navicat Premium 16连接并登录本地MySQL数据库,然后先创建ytdemo数据库,然后在该数据库中创建people
浅析ORM的使用及利弊 目前的.NET(C#)世界里,主流的ORM框架有哪些—SqlSugar,Dapper,Entity Framework(EF)还是… 本篇知识要点 引用SqlSugar 使用SqlSugar...对Repository类的改造 安装SqlSugar 还是熟悉的配方,还是熟悉的味道,和前文一样我们同样使用Nuget程序包管理工具来安装SqlSugar这个ORM组件: 由于本系列使用的是MySQL...数据库,所以,为了支持MySQL数据库,还需要安装SqlSugar的MySQL组件包—mySqlSugar: 使用SqlSugar连接MySQL数据库 在完成了SqlSugar的安装后,我们去到SqlSugar...我们回到项目【TsBlog.Domain】中,在此项目中也使用Nuget安装SqlSugar,打开实体类:Post.cs文件,添加实体与数据库的映射配置属性,如下: using SqlSugar; using...,地址:http://www.codeisbug.com/Doc/8/1141 再次按F5运行,这次我们可以看到和上一篇使用Ado.net操作数据库一样的运行效果了: OK,关于SqlSugar的基本集成和使用已实现
在 C# 中,有不同类型的变量(用不同的关键字定义),例如: int - 存储整数(没有小数点的整数),如 123 或 -123 double - 存储浮点数,有小数点,如 19.99 或 -19.99...要将文本和变量结合起来,使用 + 字符: string name = "John"; Console.WriteLine("Hello " + name); 您还可以使用 + 字符将一个变量添加到另一个变量...// 打印 x + y 的值 从上面的示例中,您可以预期: x 存储值 5 y 存储值 6 然后我们使用 WriteLine() 方法来显示 x + y 的值,即 11 C# 多个变量 声明多个变量:...int x, y, z; x = y = z = 50; Console.WriteLine(x + y + z); 在第一个示例中,我们声明了三个 int 类型的变量(x、y 和 z),并为它们赋了不同的值...在第二个示例中,我们声明了三个 int 类型的变量,然后将它们都赋予了相同的值 50。 C# 标识符 所有的 C# 变量都必须使用唯一的名称来标识。 这些唯一的名称被称为标识符。
前言 Hi,大家好,我是Rector 时间飞逝,一个星期又过去了,今天还是星期五,Rector在图享网继续跟大家分享系列文本:一步一步创建ASP.NET MVC5程序[Repository+Autofac...:TsBlog.Services 创建服务接口 实现服务接口 创建仓储接口 安装Autofac依赖注入组件 注册配置Autofac 依赖注入 其中,最主要的是在项目中引入依赖注入组件:Autofac并配置及简单的使用...ViewCount { get; set; } } } 其中的属性:CreatedAt,PublishedAt,IsDeleted 类型都和领域模型Post.cs实体类中的数据类型不同了。...配置实体映射 接下来,我们回到项目[TsBlog.AutoMapperConfig]项目,在项目引用中添加如下引用: TsBlog.Domain TsBlog.ViewModel 再创建三个类文件...项目[TsBlog.Frontend]的控制器操作中如何使用AutoMapper。
本文知识要点 本期是该系列的第十一篇,上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)》我们了解了母版页和部分视图,...并使用母版页和部分视图重新组织了页面的共用区域的HTML代码,本文我们将要涉及到的内容为: 通用分页的封装 文章分页的实现 通用分页的封装 在之前两期中,我们的文章列表页面是没有分页功能的,而是使用如下方法..., orderBy, pageIndex, pageSize); } 到此,我们的泛型仓储和服务的通用分页接口和实现就封装完成了,现在我们需要使用以上的分页封装,在UI层来实现文章列表的分页功能。...安装的方式为:nuget,所以与以前几期的nuget包安装类似,打开nuget包管理工具,搜索关键词PagedList,在查询出来的包中,选择PagedList.Mvc和PagedList两个分页组件包并安装...完成以上步骤之后,我们重新编译和生成项目 TsBlog.Frontend 。最后,在浏览器中打开地址: http://localhost:54739/ ,检查一下,数据分页功能是否起作用了呢?
新版本的 C# 特性需要新版本的 Visual Studio 的支持。不过,如果你不介意修改项目的话,你也能在低版本的 Visual Studio 中获得高版本的 C# 语言支持了。...不同 Visual Studio 原生支持的 C# 版本 Visual Studio 每一次的重大发布都带来新的 C# 版本(至少在 Visual Studio 2017 之前是这样),于是通常情况下如果你使用了旧版本的...各个 C# 版本的主要特性、发布日期和发布方式(C# 1.0 - 7.3) - 吕毅 引入 Microsoft.Net.Compilers 不过,伴随着 .NET Core 生态的崛起和 NuGet 的逐渐广泛的使用...这是一个 .NET 的编译器包,无论你系统中安装的是什么版本的 C# 编译器,使用此包都可以强制项目使用某个特定版本的 C# 编译器。...第三步:编辑项目使用最新版本的 C# 语言 就像普通的项目启用最新版 C# 语言一样,在你的项目的 csproj 的 PropertyGroup 中添加以下属性: 1 Latest
= new Liststring> { "事业有成", "家庭幸福", "学业进步", "梦想成真" }; // 使用LINQ表达式组合祝福语 var newYearWishes = greetings...; 4、Lambda表达式 Funcint, string> wishLambda = year => $"新年快乐!愿你的C#项目在{year}年像Lambda表达式一样,灵活而强大。"...; } 6、属性和自动实现的属性 var wish = new NewYearWish(); Console.WriteLine(wish.Message); public class NewYearWish..., Year: DateTime.Now.Year); Console.WriteLine($"{wishTuple.Message}愿你的C#代码在{wishTuple.Year}年像元组一样,灵活而强大...(1, 120); string GetWish(int age) => age switch { "新年快乐,愿你的学业进步,像C#的LINQ一样流畅而高效!"
如果是,你在练习的时候有没有遇到什么问题呢? 反正Rector是有收到部分童鞋发来他们练习过程中的问题反馈的哦。...创建领域实体和视图实体 在项目 【TsBlog.Domain】中的Entities文件夹中创建 User.cs 实体类: using SqlSugar; using System; namespace...ModifiedOn { get; set; } public int Type { get; set; } } } 仓储层 在项目【TsBlog.Repositories】中创建...MD5加密用户的密码,并将其保存到数据库中(数据库中保存明文的密码是非常危险的,特别是在重要的安全级别很高的项目中,千(不)万(信)别(你)这(试)样(一)做(下)!!!)。...以上,我们只完成了注册和登录的基本功能,接下来我们来体验一下简单的权限访问,在本期教程之前,我们的: http://localhost:54739/home/index 以及 http://localhost
例如,C# 14 之前,如果要确保 string 属性无法设置为 null,则必须声明一个后备字段并实现这两个访问器: private string _msg; public string Message...隐式跨度转换 C# 14 在语言中引入了对 System.Span 和 System.ReadOnlySpan 的一流支持。这种支持包括新的隐式转换,使得使用这些类型进行编程更加自然。...跨度类型可以作为扩展方法的接收器、与其他转换组合,或者在泛型类型推理场景中提供帮助。 未绑定的泛型类型与nameof 从 C# 14 开始,nameof 的参数可以是未绑定的泛型类型。...在早期版本的 C# 中,只能使用关闭的泛型类型(例如 Listint>)返回 List 名称。...C# 14 中可以使用运算符简化上述代码 ?.
请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。...在ASP.NET MVC5中,Global.asax文件中定义了MvcApplication类,继承自HttpApplication类: public class MvcApplication : System.Web.HttpApplication...在Action执行前会进行模型绑定和模型认证操作。...Filters 在ASP.NET MVC5中有常用的过滤器有5个:IAuthenticationFilter、IAuthorizationFilter、IActionFilter、IResultFilter...在ASP.NET MVC中所有的过滤器最终都会被封装为Filter对象,该对象中FilterScope类型的属性Scope和int类型属性Order用于决定过滤器执行的先后顺序,具体规则如下: Order
值类型和引用类型 C#和Java都区分值类型和引用类型,但C#的处理更加灵活: 值类型(Value Types): 在C#中,所有的基本数据类型(int, float, bool等)和struct都是值类型..."; Java在较新的版本中也引入了类似的功能,但语法不同: String name = "Alice"; int age = 30; String message = String.format("...在实际编程中,合理利用这些特性可以提高代码质量和开发效率。例如,使用模式匹配可以使类型检查和转换更加简洁,使用switch表达式可以使复杂的条件判断更加清晰。...1.5 方法和参数 方法(在Java中称为函数)是编程中最基本的代码组织单元。C#和Java在方法定义和使用上有很多相似之处,但C#提供了一些额外的特性,使得方法定义和调用更加灵活。...a : b; } 方法组合与函数式编程 C#对函数式编程有很好的支持,可以轻松组合和传递方法: Funcint, int> square = x => x * x; Funcint, int> addOne
开始使用 使用Wijmo制作MVC5应用程序,首先要做的是安装Wijmo 。...在 Web 选项卡中,您可以发现Wijmo。 ? ? 在创建的Views|Shared下,打开_Layout.cshtml。模板中添加了一些菜单、按钮、复选框、简单的输入框等Wijmo控件。...需要在Models文件夹中添加一个新类,命名为ToDo.cs,并添加以下代码: public class TahDoList { [Editable(false)] public int Id {...(DataType.MultilineText)] public string Note { get; set; } public int TahDoListId { get; set; } public...ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 7. ASP.NET MVC 5 - 从控制器访问数据模型 8.
C#中的GraphQL实现 在C#中,最常用的GraphQL库是GraphQL.NET。这个库提供了丰富的功能,可以帮助开发者快速构建GraphQL API。...标量类型 标量类型是最基本的数据类型,包括Int、Float、String、Boolean和ID。...权限控制 在实际应用中,不同的用户可能具有不同的权限,需要对查询进行权限控制。可以在字段解析方法中添加权限验证逻辑。...异常处理 在GraphQL中,异常处理非常重要。可以通过自定义异常处理器来捕获和处理异常。...通过本文的介绍,希望C#开发者能够更好地理解和使用GraphQL,避免常见的问题和易错点,构建高性能的API。在未来,GraphQL将继续发展,为Web应用带来更多的可能性。
也就是说,子类可以在不影响程序正确性和预期行为的情况下替代父类。 下面是一个使用C#示例来说明里式替换原则的应用: 假设我们正在开发一个图形绘制应用程序,其中包含多种形状(如圆形、矩形等)。...在C#中,我们可以通过创建具体的子类来表示不同形状,并确保它们能够在继承自抽象基类时正确地实现自己特定的行为。这样可以提高代码的可扩展性和灵活性,并使得代码更易于维护和重用。...首先,定义三个类 User、Friend 和 Message 来表示用户、好友和消息,并在 User 类中实现发送消息的方法: public class User { private string...通过将现有对象组合起来创建新的对象,可以更灵活地实现功能的复用和扩展。 下面是一个使用C#示例来说明合成复用原则的应用: 假设我们正在开发一个图形库,其中包含各种形状(如圆形、矩形等)。...在该类中使用对象组合将多个图形组合在一起: public class Canvas { private List shapes; public Canvas()
导航栏:文章一直在更新,建议看原文。...大数据+人工智能: NetCore Python3 基础系列: 1.Python3 与 C# 基础语法对比(就当Python和C#基础的普及吧) https://www.cnblogs.com/dotnetcrazy.../p/9102030.html 2.Python3 与 C# 基础语法对比(String专栏) https://www.cnblogs.com/dotnetcrazy/p/9114691.html 3....(不是所有情况都适用) http://www.cnblogs.com/dunitian/p/5239049.html 01.在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?...ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御 http://www.cnblogs.com/dunitian/p/5724872.html 探索ASP.NET MVC5
: "Cannot be blank", paramName: nameof(lastName)); 9Catch 和 Finally 块中的 Await 现在可以在 catch 或 finally 表达式中使用...新语法支持使用索引分配到集合中: private Dictionaryint, string> webErrors = new Dictionaryint, string> { [404]...调用方可使用属性初始化表达式语法在创建表达式中设置这些值,但构造完成后,这些属性将变为只读。 仅限 init 的资源库提供了一个窗口用来更改状态。...; 4模式匹配增强功能 C# 9 包括新的模式匹配改进: 类型模式要求在变量是一种类型时匹配 带圆括号的模式强制或强调模式组合的优先级 联合 and 模式要求两个模式都匹配 析取 or 模式要求任一模式匹配...在 C# 9.0 中,已知创建对象的类型时,可在 new 表达式中省略该类型。