C# Point=null作为类构造函数中的默认参数

C# Point=null作为类构造函数中的默认参数,c#,.net,C#,.net,当我试图编译这段简单的代码时,我的构造函数中出现了两个错误:“类型的值不能用作默认参数” 我怎样才能解决这个问题 public class PointerArgs { public Point Point { get; set; } public Point TransformedPoint { get; set; } public PointerArgs(Point point = null, Point transformedPoint

当我试图编译这段简单的代码时,我的构造函数中出现了两个错误:“类型的值不能用作默认参数” 我怎样才能解决这个问题

  public class PointerArgs
  {

      public Point Point { get; set; }


      public Point TransformedPoint { get; set; }


      public PointerArgs(Point point = null, Point transformedPoint = null)
      {
          this.Point = point;
          this.TransformedPoint = transformedPoint;
      }
  }

不能将
点设置为
null
,因为它是值类型

只要这样做:

public PointerArgs(Point point = default(Point), Point transformedPoint = default(Point))
{
   this.Point = point;
   this.TransformedPoint = transformedPoint;
}

您可以通过使其
可为null
类型将其赋值为null,但这在这里是不必要的

您不能将
点设置为
null
,因为它是值类型

只要这样做:

public PointerArgs(Point point = default(Point), Point transformedPoint = default(Point))
{
   this.Point = point;
   this.TransformedPoint = transformedPoint;
}

您可以通过使其
可为null
类型将其赋值为null,但这在这里是不必要的

refere的可能重复refere的可能重复..您可能还需要对其他可选值类型参数执行此操作..现在您已将其设置为可为Null,它将不可分配给不可为Null的类级别属性。@SimonWhitehead那么我是否应该将其保留为
默认值(点)
。。这为OP省下了困惑(因为他们会从你的答案中得到一个编译器错误)。没问题。谢谢你没有把我的建议当作侮辱。。。很多人似乎都在这样做:)+1..您可能还需要对另一个可选的值类型参数执行此操作..现在您已将其设置为可为Null,它将不可分配给不可为Null的类级别属性。@SimonWhitehead那么我是否应该将其保留为
default(Point)
。。这为OP省下了困惑(因为他们会从你的答案中得到一个编译器错误)。没问题。谢谢你没有把我的建议当作侮辱。。。很多人似乎都在这样做:)+1