// 像素转换信息
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 1
作用就是,当 new 一个 ConvertParam 对象的时候,
它的 InImage 和 OutImage 属性也同步 new 一个 CImage 对象, 如果省略,这两个属性就是默认值 null |
2
rwecho 2023-09-04 15:35:52 +08:00 2
这个就是默认构造函数, 它可以省略掉, 前提是你要自己初始化 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 1
就是字段初始值为 null 还是 CImage 空对象的区别
|