c#软件开发学习笔记--方法

C# 软件开发全生命周期深度解析 本文概述了现代C#软件开发的完整生命周期,包含需求分析、系统设计、编码实现、测试验证等核心阶段。在需求分析阶段强调使用接口契约明确功能;系统设计阶段展示了Entity Framework Core的领域模型实现;编码阶段呈现了基于CQRS模式的订单处理示例;测试阶段介绍了xUnit单元测试实践。文章通过代码示例和对比表格,系统性地阐述了各阶段的C#最佳实践,包括现代语言特性应用、DDD实现方式和测试驱动开发等,为C#开发者提供了从理论到实践的完整指导。整个开发过程呈现迭代式演进特征,确保软件质量持续提升。 阅读详情

c#软件开发学习笔记

一、方法和定义和调用

方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。

1.定义方法

public static void Test() { }
public 访问修饰符,一般定义公共的
static 静态修饰符 ,不加static为非静态方法
void 返回值类型,void表示无返回值,若有返回值则写返回值类型
Test 方法名字 遵循大驼峰命名规则
(int a,int b,) 参数列表
{} 方法体

2.方法的参数

形参:形式参数,方法在定义的时候,声明在()里面的变量,这个形参的值由实参来决定
实参:实际参数,方法在调用的时候,写在()里面的数据,这个数据就会赋值给对应的形参

//调用有多个参数的方法
Test1(100, "猫猫");

public static void Test1(int count,string name)
{
    for (int i = 0; i < count; i++)
    {
        Console.WriteLine(name);
    }
}

在方法定义的时候,可以给形参设置一个默认值,当方法调用的时候,如果没有传递参数,则使用这个参数的默认值(这个参数也叫做 “可选参数”)

// 调用Test4 有默认参数的方法
Test4(10, "喵喵"); //不传默认参数的情况 默认参数值是定义时候写的值

public static void Test4(int count,string name,string str="流浪猫")
{
    for (int i = 0; i < count; i++)
    {
        Console.WriteLine(name+"是"+str);
    }
}

3.方法的返回值

return关键字
返回值的作用: 将方法执行的结果返回到调用的地方
在定义方法的时候,指定方法的返回值类型,如果没有返回值 void

//调用带返回值的方法Test2
int s1 = Test2(99, 99);

public static int Test2(int a,int b)
{
    int sum = a + b;
    return sum; // return返回 跳出方法体, return后面的类型与方法返回值类型保持一致
}

4.方法参数的传递

1.值传递

值传递:方法默认的传递方式,以这种方式调用方法,会在方法执行的时候,声明一个新的变量,接收一个参数,当在方法内部修改的时候,不会影响到外部

  1. 值传递-------> 传递值类型
    把实参值拷贝一份赋值给形参,在方法体里面修改形参的值不会影响调用时候实参的值。
int a1 = 10;
Test1(a1); //把实参传递给形参 把a1赋值a 

//传递的参数类型是值类型
public static void Test1(int a) //
{
    a = 20;// 修改a的值,不会影响a1的值
}
  1. 值传递-------> 传递引用类型
    把实参的对象地址赋值给形参,形参和实参指向同一个地址,证明是同一个对象
    如果在方法中通过对象.属性这种方式进行修改的时候,会影响到实参的对象值,但是本质上影响是对象的属性值,变量里面保存的内存地址不受影响
    如果在方法中通过new关键字创键对象,改变整个对象,相当于是开辟了一块新的内存地址,把变量内部保存的旧地址覆盖掉,不会影响到实参的值
People p1 = new People() { Name="张三"};

public static void Test2( People p) //  p=p1
{
    Console.WriteLine("修改之前"+p.Name);//张三
    //修改传递过来实参的俩中方式
    //第一种修改:对象.属性这种方式进行修改
    p.Name = "李四";

    // 第二种修改 修改形参的指向   p与传递过来就不在是同一个对象 如果使用这种改成name=李四 不影响外边的实参的对象的值
    p = new People() {Name="李四" };
}
2.引用传递

引用传递:当传递一个值类型或者引用类型的时候,方法内部修改形参,会影响到外部

总结值传递和引用传递的区别:
值传递 在方法内部修改变量,不会影响到外部
引用传递 在方法内部修改变量,会影响到外部

5.ref参数传递(引用传递)

在方法定义的时候,给某个形参前面加上ref关键字,这个参数就将进行引用传递(直接传递变量本身)

int a1 = 10;  //ref参数必须赋初始值
Test1(ref a1); //如果参数有ref关键字,需要调用的时候实参前面添加ref关键字

public static void Test1(ref int a)
{
    a = 20;//此处修改会影响到外部a1值
}

6. out参数传递

out参数作用:如果想一个方法有个多个返回值,就可以使用out关键字

int a1 = 30;
int b1 = 40;    //4 在调用时候可以不用初始化
Test1(out a1, out  b1);
Console.WriteLine("a1的值"+a1+";b1的值"+b1);

//使用out输出参数定义方法的时候 先在参数前添加out关键字
public static void Test1(out int a, out int b)
{
    a = 90; // 修改a		//必须在方法内部初始化赋值
    b = 90; // 修改b
    
    a = a + b;// 和180
    b = (a-b)*b;//乘积8100
}

总结:ref和out的区别:
1.ref传递参数,必须赋值,out传递参数,可以不用赋值
2.ref传递的参数,在方法中可以不用赋值,out传递的参数,在方法中必须赋值
3.ref传递的参数,可以直接在方法中取值,out传递的参数,必须在赋值之后才能取值

ref的主要作用是为了传入数据,因此传入的时候必须赋值
out的主要作用是为了传出数据,因此在传入的时候,可以不用赋值,但是在方法中必须赋值

7. in关键字

in 关键字修饰之后的参数,方法内部不能对其进行修改(把参数修饰成只读的)

public static void Test1(in int a)
{
    //a = 100;// in 使参数变成只读的,不能进行修改
}

8. params关键字

params关键字,参数列表 允许传递不定数量的参数

Test1(1, 2,4,4,4,4,4,4,4,4,44);//传递多个参数

public static void Test1(params int[] a)
{
    //取出所有的参数
    for (int i = 0; i <a.Length; i++)
    {
        Console.WriteLine(a[i]);
    }
}
【C#】C#入门学习笔记 C#的自用笔记——基础部分 阅读详情

相关推荐

全面掌握C#软件开发:项目实践指南

C#(发音为 "看")是一种由微软公司开发的面向对象的高级编程语言。该语言最初在2000年随.NET框架一起发布,其设计受到了C和C++的影响,并加入了其他语言如Java和Delphi的特性。C#的设计理念旨在提供一个简洁、类型安全且强大的编程语言。安装完成之后,Visual Studio的用户界面包括多个主要部分:菜单栏、工具栏、工具箱、代码编辑器、解决方案资源管理器、输出和错误列表窗口等。A[菜单栏] -->|包含| B[文件]A -->|包含| C[编辑]A -->|包含| D[视图]

weixin_36483050的博客 1372

C#学习笔记(1)hello world

C#学习笔记(1)hello world1、简单的hello worl 程序2、 命名规则3、Main程序的起点4、控制台输出5、 注释 1、简单的hello worl 程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tas...

俺要回家的博客 239

软件开发文档:C#项目关键指南

本文还有配套的精品资源,点击获取 简介:软件开发文档是项目沟通、管理与质量保证的基石。本文探讨了软件开发文档的重要性,特别是与C#相关的部分。文档的核心包括需求分析、系统设计、接口规范、数据库设计、编码规范与注释、单元测试、用户手册、项目管理、部署与维护以及版本控制与代码审查。良好的文档能提升团队效率,降低沟通成本,保证软件质量,并为未来维护和扩展奠定基础。C#开发者需掌握...

weixin_42601608的博客 2113

C#学习笔记:利用Array类的Copy方法赋值数组

参考书目:C#6.0学习笔记——从第一行C#代码到第一个项目设计(作者周家安) 目标:掌握利用Array类的Copy方法赋值数组。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static Sy...

qq_41708281的博客 660

CMMI AIM 人工智能成熟度框架:31个过程域的157项AI实践集成

CMMI AIM人工智能成熟度框架为企业提供了系统化管理AI项目全生命周期的解决方案,包含31个过程域的157项AI实践。该框架通过四个演进阶段(混沌与风险、结构与凝聚、验证与信任、价值与增长),帮助组织建立可持续的AI能力成长路径,降低项目失败率并提升商业价值。

weixin_42613501的博客 353

【EPICS学习记录】根据官方教程创建一个IOC应用

参照官网给出的IOC创建教程逐步操作完成了一个IOC应用的创建,官网教程中有部分过程表述的不清晰,自己摸索之后完成了IOC的创建,并把流程记录下来。其中有一些操作不是很理解,有问题或者建议欢迎指正。

yifeng_H的博客 3661

C#学习笔记:调用System.Array类的Reverse方法实现数组的反转

参考书目:C#6.0学习笔记——从第一行C#代码到第一个项目设计(作者周家安)P120 学习目标:调用System.Array类的Reverse方法实现数组的反转、 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks...

qq_41708281的博客 956

KNX智能家居工程设计应用

KNX,是一个起源于欧洲的总线标准,主要应用于家居和楼宇中,对末端电气设备进行总线式的控制,比如照明、空调、地暖、电动窗帘和遮阳设备等等。根据2017年英国著名咨询公司BSRIA的数据报告显示,在中国的智能家居和灯光控制市场,KNX产品的市场份额为各类产品中排名第一,占据了42%的市场份额,远远领先于其他的标准协议。设备中一个继电器表示一路输出,某些功能可能需要用到多个输出,比如1个窗帘AC输出需要占用两路继电器输出,一个继电器用于控制正转,一个用于控制反转,而普通开关输出则需要占用一路继电器输出即可。

hhhh5555666的博客 934

C#学习笔记(上)

经本人搜集网上资料后整合而成的C#学习笔记,知识点很全面,前面某些很基础的内容绝大部分人都已经在学C/C++的时候学过了,所以基本一笔带过,其它地方都尽量写的很详细。

m0_75104457的博客 2315

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 319

【存储原理】IO超时处理 块层block-scsi层之间

【存储原理】IO超时处理 块层block-scsi层之间

sinat_37817094的博客 1024

C#学习笔记4

方法(method)的由来;使用Π等数学量可以使用Math类;方法的声明与调用;构造器(constructor);方法的重载(Overload);对方法进行Debug;方法的调用与栈

LRP_824的博客 2178

PCL 基于超体素的点云分割【2024最新版】

点云超体素分割原理介绍、代码实现以及如何做到将每一个超体素内的点进行单独保存而不造成点云缺失的方法。博客长期更新,本文最近一次更新时间为:2024年12月29日。

点云侠的博客 36万+

C# 学习笔记

MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,是编写C#程序或者说.NET程序最常用的开发工具。因其功能强大、简单易用、速度快、智能度高,被网友戏称宇宙第一IDE。

qq_52144597的博客 2046

【数据集】1980-2020年(5年)土地利用分类数据-中国科学院

简介1980-2020年每五年土地利用数据-中国科学院

WW、forever的博客 3933

【保姆级教程】基于UNet++&MobileNetv3的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv3作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 256

C#学习笔记3

构成C#语言的基本元素;关键字;C#中函数的简单定义和调用;使用递归计算1-100和的三种方式;空白实例;类型、变量和方法

LRP_824的博客 1673

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# 方法

在C#中,方法是一段可重用的代码块,它执行特定的任务或功能。方法是面向对象编程中的基本概念之一,用于封装和组织代码。方法由方法体和方法签名组成。方法体是包含实际代码的部分,用于执行特定的任务。方法签名由方法的名称、返回类型、参数列表组成,用于唯一标识一个方法。方法签名中除了名称,还包括返回类型和参数的顺序、类型以及数量。方法可以通过方法名以及提供的参数值来调用。调用方法会执行方法体中的代码,并可能返回一个值。方法可以接受零个或多个参数,用于向方法传递数据。参数被定义为方法签名的一部分,它们有类型和名称。

emmmheng的博客 1966

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【无标题】 C#的学习笔记

是一种数据结构一种数据类型代表现实世界中的“种类”

dh15834384655的博客 1162

C#学习笔记(基础)

C#学习笔记---- 由浅入深,由表及里,由现象到本质。

芒果~不忙的博客 3409

C#中级软件开发笔试题

996的空闲时间参加了某半导体公司的软件开发笔试,记录一下笔试题目,考核很扎实。

yannsann的博客 1514

C#语言的软件开发工具

通过以上的介绍,我们可以看到C#语言在软件开发过程中有着强大的工具支持。无论是从代码编写、调试测试,还是版本控制、项目管理,C#相关工具都可以极大提升开发效率和代码质量。在未来,随着技术的不断进步和工具的持续更新,相信C#及其开发工具将继续为开发者提供更好的支持,推动软件开发的不断发展。无论是初学者还是经验丰富的开发者,选择合适的开发工具都是提升工作效率和代码质量的重要一步。希望通过本文的介绍,能够帮助读者更好地理解C#语言及其相关开发工具,为未来的开发之路打下坚实的基础。

2501_90425672的博客 410

基于C#的工控上位机软件开发从入门到学废,需要几步?

随着工控产品的应用,开始大幅度渗透进民用领域。涉及的工控产品范围广泛,如PLC、DCS、变频器、仪表、电机、SCADA、低压及配电元器件等。

程序员之道 1万+

XLUA学习笔记之C#和Lua之间的相互调用

感觉学习的笔记还是放在网上查询的时候比较方便,文章初看会感觉很难理清,需要耐心去看,对不起自己对不起翻到我文章的同学,不废话直接上代码。 1.C#调用Lua (耐心!耐心!耐心!) using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using XLua; //这...

xmx5166的博客 7434

C#学习笔记——类和方法

C#学习笔记——类和方法 C# 封装 封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。 抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象。 封装使用 访问修饰符 来实现。一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示: Public Pr...

qq_45205390的博客 592

C#入门学习笔记 #3(基本元素、类型、变量、方法、算法)

本文分享了C#学习笔记的要点,包括基本元素(关键字、操作符、标识符等)、命名规范、类型与变量、方法的概念。特别介绍了var关键字的使用建议,并通过简单算法示例(循环和递归)演示了编程思想。文章强调实践的重要性,建议初学者结合实际代码练习来巩固知识,未来将持续更新更多C#内容和算法题解。笔记风格简洁实用,旨在帮助读者快速掌握C#基础。

m0_73612206的博客 797
上一篇: c#软件开发学习笔记--类和对象、内存结构
下一篇: c#软件开发学习笔记--随机数、时间对象、字符串
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值