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