用' new() '约束类型参数是什么意思?

本文关键字:是什么 意思 类型参数 new 约束 | 更新日期: 2023-09-27 18:01:36

这是来自流行的EmguCV包的类签名。这是Image类-并不是所有的都是重要的:

/// <summary>
/// An Image is a wrapper to IplImage of OpenCV. 
/// </summary>
/// <typeparam name="TColor">Color type of this image (either Gray, Bgr, Bgra, Hsv, Hls, Lab, Luv, Xyz, Ycc, Rgb or Rbga)</typeparam>
/// <typeparam name="TDepth">Depth of this image (either Byte, SByte, Single, double, UInt16, Int16 or Int32)</typeparam>
public partial class Image<TColor, TDepth>
  : CvArray<TDepth>, IImage, IEquatable<Image<TColor, TDepth>>
  where TColor : struct, IColor
  where TDepth : new()

特别注意

  ...
  where TDepth : new()  // <-- either Byte, SByte, Single, double, UInt16, Int16 or Int32

new()如何约束类型参数TDepth到。net整型?

用' new() '约束类型参数是什么意思?

没有。所有new()保证的是具有约束的泛型类型(在本例中为TDepth)必须提供无参数构造函数,并且它不是抽象的,根据文档。