首页
学习
活动
专区
圈层
工具
发布

在C#中ref和out具体怎么使用?在什么情况下使用?

使用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

3.4K10

Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码

其中,我们需要重点关注以下两个目录: 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...在代码设计方面,本人现在更热衷于简单设计,轻架构,“简单”代码。

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    字符串池:string字符串在C++和C#中的差异化内存管理方式详解

    C++和C#中字符串的内存管理深度解析在编程世界中,字符串是一种基本的数据类型,它在各种应用中都有广泛的使用。...1.2 C在C#中,字符串是通过string类来表示的。...C++和C#字符串的差异在C++和C#中,字符串在内存中的表示和管理方式有所不同。下面我们用mermaid图来表示这种差异。...在C#中,string从托管堆中分配内存,这个堆由垃圾回收器管理。在C#中,string可能会使用字符串池,这可以避免存储重复的字符串,从而节省内存。...结论C++和C#在字符串的内存管理上有一些重要的差异,这些差异主要体现在修改性、内存分配和生命周期管理上。在选择使用哪种语言时,需要根据具体的应用需求来考虑。

    48821

    Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库

    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

    1.5K00

    一步一步创建ASP.NET MVC5程序(三)

    浅析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的基本集成和使用已实现

    1.7K100

    掌握 C# 变量:在代码中声明、初始化和使用不同类型的综合指南

    在 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# 变量都必须使用唯一的名称来标识。 这些唯一的名称被称为标识符。

    1.5K10

    一步一步创建ASP.NET MVC5程序(五)

    前言 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。

    2K100

    一步一步创建ASP.NET MVC5程序(十一)

    本文知识要点 本期是该系列的第十一篇,上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)》我们了解了母版页和部分视图,...并使用母版页和部分视图重新组织了页面的共用区域的HTML代码,本文我们将要涉及到的内容为: 通用分页的封装 文章分页的实现 通用分页的封装 在之前两期中,我们的文章列表页面是没有分页功能的,而是使用如下方法..., orderBy, pageIndex, pageSize); } 到此,我们的泛型仓储和服务的通用分页接口和实现就封装完成了,现在我们需要使用以上的分页封装,在UI层来实现文章列表的分页功能。...安装的方式为:nuget,所以与以前几期的nuget包安装类似,打开nuget包管理工具,搜索关键词PagedList,在查询出来的包中,选择PagedList.Mvc和PagedList两个分页组件包并安装...完成以上步骤之后,我们重新编译和生成项目 TsBlog.Frontend 。最后,在浏览器中打开地址: http://localhost:54739/ ,检查一下,数据分页功能是否起作用了呢?

    1.7K60

    使用 Microsoft.Net.Compilers 在旧版本的 Visual Studio 201320152017 中开启新的 C# 7.x 和 C# 8 语法

    新版本的 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

    92120

    一步一步创建ASP.NET MVC5程序(八)

    如果是,你在练习的时候有没有遇到什么问题呢? 反正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

    1.5K60

    C# 14 新增功能实操!

    例如,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 中可以使用运算符简化上述代码 ?.

    3210

    C# 14 新增功能一览,你觉得实用吗?

    例如,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 中可以使用运算符简化上述代码 ?.

    16010

    Java失业者转.NET开发路线目录

    值类型和引用类型 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

    55810

    以C#一分钟浅谈:GraphQL 数据类型与查询

    C#中的GraphQL实现 在C#中,最常用的GraphQL库是GraphQL.NET。这个库提供了丰富的功能,可以帮助开发者快速构建GraphQL API。...标量类型 标量类型是最基本的数据类型,包括Int、Float、String、Boolean和ID。...权限控制 在实际应用中,不同的用户可能具有不同的权限,需要对查询进行权限控制。可以在字段解析方法中添加权限验证逻辑。...异常处理 在GraphQL中,异常处理非常重要。可以通过自定义异常处理器来捕获和处理异常。...通过本文的介绍,希望C#开发者能够更好地理解和使用GraphQL,避免常见的问题和易错点,构建高性能的API。在未来,GraphQL将继续发展,为Web应用带来更多的可能性。

    25510

    C#软件架构设计原则

    也就是说,子类可以在不影响程序正确性和预期行为的情况下替代父类。 下面是一个使用C#示例来说明里式替换原则的应用: 假设我们正在开发一个图形绘制应用程序,其中包含多种形状(如圆形、矩形等)。...在C#中,我们可以通过创建具体的子类来表示不同形状,并确保它们能够在继承自抽象基类时正确地实现自己特定的行为。这样可以提高代码的可扩展性和灵活性,并使得代码更易于维护和重用。...首先,定义三个类 User、Friend 和 Message 来表示用户、好友和消息,并在 User 类中实现发送消息的方法: public class User { private string...通过将现有对象组合起来创建新的对象,可以更灵活地实现功能的复用和扩展。 下面是一个使用C#示例来说明合成复用原则的应用: 假设我们正在开发一个图形库,其中包含各种形状(如圆形、矩形等)。...在该类中使用对象组合将多个图形组合在一起: public class Canvas { private List shapes; ​ public Canvas()

    33410

    C#知多少 | 每个版本都更新了什么?

    : "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 表达式中省略该类型。

    2K20
    领券