C#学习笔记正课五

基于OpenCV的围棋终局识别与胜负判定系统实现 计算机视觉是人工智能领域的关键技术,它使计算机能够从数字图像或视频中获取、处理和分析信息。其核心原理在于通过图像处理算法提取特征,并基于这些特征进行识别、分类和测量。在工程实践中,计算机视觉技术为自动化、智能化应用提供了强大支持,广泛应用于工业检测、自动驾驶、医疗影像分析等领域。本文聚焦于一个具体的应用场景:利用OpenCV库实现围棋终局识别。通过图像预处理、棋盘检测与透视校正、交叉点定位等步骤,结合围棋规则逻辑,构建了一套从棋盘图像自动判定胜负的解决方案。该方案涉及自适应二值化、霍夫变换、连通域分析等关键 阅读详情

一、方法重载

定义一个方法,如果我们再去定义一个名字一样的方法,程序将会报错。方法重载就是通过不同类型的参数,让我们同一个名称的方法,实现不同功能。

只要满足下列三种方法中的其中一种就可以实现方法重载

1.参数个数不同

public static void Add()
{
}
public static void Add(int a)
{
}

当参数个数不同时,调用重载后的Add方法,程序不会报错。

2.参数的类型不同

public static void Add(double a){ }     //double类型
public static void Add(int a) { }       //重载后为int类型

3.参数顺序不同

使用这种重载方式的前提条件是方法的参数类型不是同一种类型。

public static void Add(int a,double b){ }  //Add方法的两个参数类型不能相同
public static void Add(double  b,int a) { }

返回值类型不同,不能实现方法重载。方法重载主要针对的是参数而不是返回值类型。

二、参数数组params

使方法可以接受相同类型但是个数不同的参数

params会将传入的参数转换为数组。

params只能修饰一维数组。

params参数数组传入参数时必须放在最后一位否则会报错,传参时不能在一个方法中使用两个params。

static void Main(string[] args)
{
    ZongHe(10,20,30);                               //传入的参数也可以为空          
}
//参数数组params
//计算传入参数的总和
public static void ZongHe(params int[] arr)
{
    int sum = 0;
    for (int i = 0; i < arr.Length; i++)
    {
        sum+= arr[i];
    }
    Console.WriteLine(sum);
}

三、ref out关键字

ref在方法内部,把方法外传入的值修改掉。

使用时在方法内和调用时都需要加入关键字ref。

调用时不能直接传int类型的值,应该先定义一个值然后在调用a,定义时必须要进行赋值不能为空。

static void Main(string[] args)
{
    int a = 10;
    Ref(ref a);
    Console.WriteLine(a);              //此时a输出为0
}

public static void Ref(ref int a) 
{
 a= 0;
}

 out关键字也可以对外面数值进行修改,在使用时和ref一样,在方法内和调用时都需要加上out。

调用前可以不对参数进行赋值,但必须在参数内进行赋值。

可以输出多个out。

只需要对前面加上关键字out的参数赋值,不加out的参数可以不赋值。

在使用out之前可以不赋值但是必须定义出来。

static void Main(string[] args)
{
    int c, d, e;
    Out(22,33,out c,out d,out e);
    Console.WriteLine(c);
}

public static void Out(int a,int b,out int c,out int d,out int e) 
{
    c = a + b;
    d = b - b;
    e = a * b;
}

ref和out的区别

1.在方法外部,使用前都必须要定义,但ref在使用前必须要进行赋值,out可以不赋值。

2.在方法内部,ref可以不进行赋值。但out必须进行赋值。

相同值

1.ref和out都可以返回多个值。

2.在方法内部的参数和在主函数里的调用前面都需要加上对应的关键字(ref/out)

3.都可以对方法外的值进行更改。

四、方法的递归和调用

在使用方法调用时,一定要安装递归装置,否则方法会一直调用下去陷入死循环。

 public static void Print(int a)
 {//方法的递归和调用
     Console.WriteLine("调用");
     if (a<=0)
     {
         return;
     }
     Print(a-1);
 }

五、枚举enum

1.枚举和类(class)同级别。

2.什么时候使用枚举,例如:季节,性别,月份这类有明确种类的东西,可以定义一个枚举。

3.定义枚举时的命名就是其类型。

4.枚举中每项内容,都有其对应默认值,类似数组下标。该值可以更改,若将第一项改为1那么枚举就会从1开始推进。

5.修改默认值时尽量只改首位,不要更改首位后再去更改其他项的默认值。

6.枚举的本质还是一种值类型。

7.不能在枚举中定义和调用方法。

static void Main(string[] args)
{    
   int a1 ;
   Season s = Season.春天;
   a1 = (int)s;                //强制转换为对应的下标
   Console.WriteLine(a1);

   int b = 2;
   Season A = (Season)b;        //转换为枚举内的内容
   Console.WriteLine(A);

}

enum Season
{
    春天,      //0
    夏天,      //1
    秋天,      //2
    冬天       //3
} 

enum Season
{
    春天=1,     //此时整个枚举从1开始
    夏天,
    秋天,
    冬天
}

六、结构体

(1.值类型:int、double、char·······相当于将原本的值赋值给其他变量,存放在栈

2.引用类型:string···将指向该数据的路径传递给变量,存放在堆里

3.值类型和引用类型存放位置是不一样的值类型存放在栈里,引用类型存放在堆中。

特点栈  堆
存放东西小数据大数据
速度极快  较慢
空间大小  很小巨大
释放方式自动释放GC自动回收(不用才清)
存放规则    先进后出 随意存放
需要管吗  完全不用管不用管,GC帮你清

)

结构体和enum一样和class是同级别的
规范写法在struct Studet前应加上public,不写默认为internal(同一个程序集内可访问)
若要在main方法中调用结构体内的属性,需要在定义的属性前加上“public”不加会默认为“private”私有的,无法访问  

static void Main(string[] args)
{
    int e1;
    Studet stu;
    stu.age = 20;
    stu.name = "小敏";

}

public struct Studet
{
    public string name; 
    public int age;
    int sex;
    }

如何具体使用struct:结构体名+自定义名。

然后直接使用自定义名+.后的属性。

如果结构体中的属性前没加public,这里就无法调用到该属性。

TMS_WebGMaps_1.9.8.0_Full_Source TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder 立即下载

相关推荐

史上最小白之RNN详解

1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当...

Tink1995的博客 4万+

C#学习笔记正课十三

1、列表 2、判断相等Equals 3、正则表达式 4、字典

ctrl_yv的博客 229

PTA 编程题(C语言)-- 然后是几点

PTA 编程题(C语言)-- 然后是几点

LCCprogrammer 5077

C#学习笔记正课一

1、C#编译执行过程 2、VS常用快捷键 3、变量与常量 4、变量名命名规范 5、命名法 6、数据类型 7、类型转换 8、算数运算符

ctrl_yv的博客 228

基于Cadence IC617的共源级放大器设计:从直流到交流的virtuoso仿真实践

本文详细介绍了使用Cadence IC617的Virtuoso平台进行共源级放大器设计的完整仿真流程。从电路图绘制、直流工作点分析,到负载电阻RD的参数扫描及其对增益和带宽的影响,再到交流小信号频率响应仿真,提供了从理论到实践的全面指导,帮助初学者掌握模拟集成电路设计的核心仿真技能。

jj890的博客 479

AI 辅助代码审查:开启代码质量管控的智能时代

AI辅助代码审查正在改变传统的代码质量管控方式。通过自动化分析、智能反馈和上下文感知,AI不仅提高了代码审查的效率,还提升了代码质量的一致性和可维护性。随着机器学习和深度学习技术的不断发展,未来AI将成为开发者日常工作中强大的助手,进一步推动软件开发向智能化、自动化方向发展。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3229

C#学习笔记正课十六

窗体 1.Button(按钮) 2.Label(标签) 3.TextBox(文本框) 4.ComboBox(下拉框) 5.ListBox(列表框)

ctrl_yv的博客 359

PVE启动卡在loading initial ramdisk

pve显卡直通导致的异常解决

学而时习之 6689

C#学习笔记正课六

本文介绍了C#中的三个核心概念:委托、Debug和面向对象编程。

ctrl_yv的博客 221

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 911

形状记忆合金热机械本构模型的ABAQUS子程序实现与Fortran\_ABAQUS编程实践

本文详细介绍了如何使用ABAQUS子程序实现形状记忆合金的热机械本构模型,并通过Fortran_ABAQUS进行编程实践。我们首先介绍了问题的背景和目标,然后讲解了如何在Fortran_ABAQUS子程序中实现热变形模型、应力应变关系和相变模型,最后进行了ABAQUS模拟,并分析了模拟结果。希望通过本文的讲解,能让大家更深入理解ABAQUS子程序以及Fortran的使用,也希望能对大家在进行相关学习或研究工作时提供一些帮助。

qq_38334677的博客 1328

C#正课十四

1、装箱拆箱 2、文件的I/O操作 3、流

ctrl_yv的博客 39

2026年沐曦集成电路数字IC笔试试卷带答案

本文摘要: 这是一份数字IC设计笔试模拟题,包含单选题、波形分析、多选题和代码设计题。重点考察ASIC设计流程(如逻辑综合将RTL转为门级网表)、时序分析(建立时间余量计算)、跨时钟域处理(格雷码应用)、复位机制、状态机设计等核心知识点。涉及沐曦特色考点如GPU架构(SIMT模型)、国产GPU芯片(曦云C系列)及MXMACA软件栈。代码题要求实现50%占空比三分频电路,综合考察Verilog设计能力。试题强调PPA优化、低功耗技术等工程实践要点,覆盖数字IC前端设计全流程核心内容。(149字)

Open 259

C#学习笔记正课九

1.虚方法、重写 2.只读字段 3.密封关键字 4.抽象类

ctrl_yv的博客 255

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C#学习笔记正课三

1.作用域 2.break关键字 3.continue关键字 4.循环嵌套 5.随机数Random类

ctrl_yv的博客 82

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C#学习笔记正课十二

1、运算符重载operator 2、泛型类与动态类型(dynamic) 3、泛型方法 4.动态数组/数组列表

ctrl_yv的博客 246

C#学习笔记正课七

一、构造函数 二、快捷Set Get修改字段的办法 三、匿名属性

ctrl_yv的博客 45

C#学习笔记正课二

1、自增表达式 2、逻辑运算符 3、赋值运算符 4、三元运算符 5、输入语句 6、选择语句 7、循环语句

ctrl_yv的博客 60

C#学习笔记正课四

1.数组 2.Array类 3.字符串 4.方法

ctrl_yv的博客 65

C#学习笔记正课十一

接口

ctrl_yv的博客 35

C#正课二十二

1、阳光UI(sunnyUI) 2、窗体国际化(语言转换)

ctrl_yv的博客 381

C#正课十八

1、下拉框comboBox 2、圆形按钮radioButton 3、集合选项卡TabControl 4、图像框PictureBox

ctrl_yv的博客 58

C#学习笔记正课十

1、密封类 2、子类构造 3、向上引用 4、静态关键字static 5、时间类型DateTime

ctrl_yv的博客 42

C#学习笔记正课八

C#继承

ctrl_yv的博客 34

C#正课十五

1、Event 事件 2、xml文档 3、Json

ctrl_yv的博客 64

C#笔记正课十九

1、添加资源 2、进度条ProgressBar 3、文件/文件夹操作 4、右键菜单 5、复合控件(用户控件)

ctrl_yv的博客 58

C#正课十七

1、容器Panel 2、菜单栏MenuStrip 3、分组框groupBox 4、列表框ListBox

ctrl_yv的博客 66
上一篇: C#学习笔记正课四
下一篇: C#学习笔记正课六
ctrl_v助手
博客等级 码龄4年 16粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值