欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 【2】VS Code 新建上位机项目---C#面向对象编程

【2】VS Code 新建上位机项目---C#面向对象编程

2025/5/15 16:24:29 来源:https://blog.csdn.net/weixin_45060125/article/details/145827436  浏览:    关键词:【2】VS Code 新建上位机项目---C#面向对象编程

VS Code 新建上位机项目---C#面向对象编程

  • 1 类与对象
    • 1.1 类的构成
    • 1.2 对象
  • 2 类的属性
    • 2.1 类的属性与类的字段
    • 2.2 类属性的拓展
    • 2.3 对象类型的属性
  • 3 构造方法(初始化)
    • 3.1 默认构造方法 无参数构造方法
    • 3.2 有参数构造方法
    • 3.3 构造方法相互调用( :this() )构造方法重载
    • 3.4 对象初始化器
  • 4 对象实例化方法
  • 5 垃圾回收机制(GC)
  • 6 静态方法(static)
  • 7 params关键字
  • 8 泛型集合
    • 8.1 基于索引的泛型集合 LIst<T>
      • 8.1.2 List<>的基本语法
      • 8.1.2 将List<>作为对象容器
    • 8.2 基于"键--值"对的泛型集合 Dictionary<k.v>

1 类与对象

1.1 类的构成

类通俗来讲,就是将目标对象进行分类。如何分类?
静态属性:是对象的基本特征信息。
动态方法:是描述对象能做什么,如何做。
类的规范:

访问修饰符 class 类的名称
{
//静态字段部分
//静态属性部分
//私有字段(一般不用)
//动态方法部分
}

一个类可以只有属性、只有方法、也可以属性、方法全部都有。不建议添加只有字段的类。

先新建一个空白项目,然后右键项目名称,添加,新建项,选择类,重新修改类名,点击添加;
在这里插入图片描述
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Thinger.ConsoleAndOperation
{/// <summary>/// 设备类/// </summary>public class Equipment //访问修饰符 class 类的名称{public int EquipID { get; set; }//属性1:设备ID//输入prop连续Tab两次可以自动复制上一行的代码结构public int EquipName { get; set; }//属性2:获取设备名称public double Pressure { get; set; }//属性3:压力public DateTime Collecttime { get; set; }//属性4:获取更新时间public void ShowInfo()//属性5:方法 显示信息{Console.WriteLine($"设备ID:{EquipID}");}}
}

tips:
【1】访问修饰符

public class Equipment //访问修饰符 class 类的名称

访问修饰符不写的时候,默认访问修饰符是internal,表示只能再当前程序集内部使用该类。public可以再程序集外面通过调用命名空间的方式使用。类的名称首字母要大写。

【2】get与set是一个方法。主要执行过程是先将对象的值set给类,类里面通过get读取这个数然后执行语句,在对象的位置显示。所以说get与set是方法, public int EquipID才是属性。

 public int EquipID { get; set; }//属性1:设备ID

找到路径下的ildasm.exe文件,双击运行,
在这里插入图片描述
右键程序集,选择再文件资源管理器中打开文件夹,C:\Users\wang\Desktop\Thinger.ConsoleAndOperation\Thinger.ConsoleAndOperation\bin\Debug,找到debug下面的.exe文件,将其直接拖到运行窗口ildasm.exe中,可以看到get与set的底层逻辑。查看完毕后,记得关闭ildasm.exe文件,否则会影响程序运行。
在这里插入图片描述
在这里插入图片描述

【3】类只是规定了,它能存储什么类型的数据、能够完成什么任务,但是没有具体的数据。类本身也是一种数据类型,有点像是西门子下位的UDT或者WINCC的结构体。他只有后缀,并不是一个完整的变量,因此需要对象来作为前缀,这样前缀+后缀就构成了一个完成的变量。所以想让类有具体的内容需要对象来进行填充。

1.2 对象

对象就是用类做模板,给类的属性赋值。

使用new关键字定义,会将类调到内存中,从而变成对象的实例。

类名 对象名 = new 类名();
对象名.属性 = 值;
对象名.方法(参数...)

回到progrpm.cs。

using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;namespace Thinger.ConsoleAndOperation
{class Program{static void Main(string[] args){Equipment Equip = new Equipment();//根据类构建对象Equip.EquipID = 101;//给对象(Equip)的类(Equipment)中的属性(ID)赋值Equip.EquipName = "空气压缩机";//Equip.Pressure = 2.5;//下位机读取的数据Equip.Collecttime = Convert.ToDateTime("2025-2-24");//Equip.ShowInfo();//显示信息Equipment Equip2 = new Equipment();//根据类构建了一个对象Equip2.EquipID = 102;//给对象(Equip)的类(Equipment)中的属性(ID)赋值Equip2.EquipName = "空气压缩机";Equip2.Pressure = 2.6;//下位机读取的数据Equip2.Collecttime = Convert.ToDateTime("2025-2-24");Equip2.ShowInfo();//显示Console.ReadLine();//调用控制台}        }
}

在这里插入图片描述

2 类的属性

2.1 类的属性与类的字段

【1】字段,又称为“成员变量”
第一、目的:字段是为类的内部方法,或者方法之间传递数据使用,强调对内使用。交修饰:字段一般用private修饰,很少用public。
第三、读写:字段可以读写均可,也可以用readonly限制为只读,但是不能添加业务。
【2】属性
第一、目的:属性是对外提供数据访问、本地不保数据,强调对外使
第二、修饰:属性都是public,从来不用private。
第三、读写:属性可以轻松的实现单独读写控制,并且可以添加任意需要的业务逻辑。
第四、强制:dgv列表必须强制使用属性,不能使用公有字段。

namespace Thinger.ConsoleAndOperation
{/// <summary>/// 设备信息类/// </summary>public class Equipment2{public int EquipID { get; set; } //属性可读可写,外部可以调用// public int EquipID;//公用字段,不要使用private int _equipid = 0;//私有字段public int EquiplD//使用私有字段进行逻辑判断,只能在当前类使用{get { return _equipid; }set { if (value < 100) _equipid = 100; else _equipid = value; }}private string equipname= string.Empty;//私有字段public string EquipName { get { return equipname; }set { equipname = value; }}//只读属性public double Pressure { get{double result = 2.5;return result;}}public DateTime Collecttime { get; set; }public void ShowInfo(){Console.WriteLine($"设备ID:{EquipID},设备名称:{EquipName}");}}
}

2.2 类属性的拓展

【1】类属性直接初始化

public int EquipID { get; set; } = 101;//直接赋值初始化

【2】类属性表达式
在这里插入图片描述
补充:使用属性的时候,有的地方也可以用方法代,但是设计的时候,如果你侧重的是属性(比如需要在dgv中显示)就要用属性,如果是单独的行为,可以用方法。

2.3 对象类型的属性

类是一种数据类型(引用类型),类中的属性和变量(局部变量和成员变量)也可以是类,开发中还会出现集合对象或者数组对象类型。

新建一个新的类,命名Equipment4表示设备,再新建一个类命名Sensor表示传感器,访问修饰符均选择public。

在Sensor类中:

 public  class Sensor{public int SensorNO { get; set; }//传感器编号public double SensorTemp { get; set; }//传感器温度}

在Equipment4类中:

public Sensor CurrentSensor { get; set; }//一个设备只有一个传感器
public Sensor[] CurrentSensorArray { get; set; }//一个设备有多个传感器,这就是对象类型的属性

在对象Program中:

static void Test3()
{
//一个对象Equip4设备其类 Equipment4包括CurrentSensor属性,这个属性又作为对象包括SensorNO和SensorTemp属性Equipment4 Equip4 = new Equipment4();//定义新对象Equip4其属性类是Equipment4Sensor sensor = new Sensor();//定义对象属性sensor其属性类是Sensorsensor.SensorNO = 1; //给对象属性ID赋值sensor.SensorTemp = 26.6; //给对象属性TEMP赋值Equip4.CurrentSensor = sensor;//给对象的CurrentSensor属性赋值Console.WriteLine(

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词