// 像素转换信息 public class ConvertParam { // 输入的图像信息 public CImage InImage { get; set; } // 输出的图像信息 public CImage OutImage { get; set; } // 构造函数 public ConvertParam() { InImage = new CImage(); OutImage = new CImage(); } }
大佬们,上面 ConvertParam 类里面有两个 CImage 类型的属性 InImage 和 OutImage ,
下面的无参构造函数能不能省略呢?
如果不能的话,这个无参构造函数起什么必要的作用呢?
![]() | 1 cat 2023-09-04 14:12:15 +08:00 ![]() 作用就是,当 new 一个 ConvertParam 对象的时候, 它的 InImage 和 OutImage 属性也同步 new 一个 CImage 对象, 如果省略,这两个属性就是默认值 null |
![]() | 2 rwecho 2023-09-04 15:35:52 +08:00 ![]() 这个就是默认构造函数, 它可以省略掉, 前提是你要自己初始化 InImage 和 OutImage 这里有几种写法: 1. public CImage InImage { get; set; } = new CImage(); // 直接初始化属性的时候,赋值。 2. public CImage InImage { get; init; } = null!; // 定义一个不能为空的属性 InImage , 并且声明它必须在初始化的时候进行赋值, 如下 var cOnvertParam= new ConvertParam() { InImage = new CImage () } 3. 定义成 record ,如果是简单的类,用 record 最方便,特别是对一些序列化的类: public record ConvertParam(CImage InImage, CImage OutImage); |
![]() | 3 yuandong 2023-09-07 11:40:11 +08:00 ![]() 就是字段初始值为 null 还是 CImage 空对象的区别 |