Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我要找“接线员”!='无法在此结构实现中应用于Point和类型的操作数_C#_Validation_Properties_Setter - Fatal编程技术网

C# 为什么我要找“接线员”!='无法在此结构实现中应用于Point和类型的操作数

C# 为什么我要找“接线员”!='无法在此结构实现中应用于Point和类型的操作数,c#,validation,properties,setter,C#,Validation,Properties,Setter,我真的不知道为什么在这里尝试验证属性代码中的输入值时会出现此错误: using ConsoleApplication4.Interfaces; public struct Vector:IComparable { private Point startingPoint; private Point endPoint; public Point StartingPoint { get { return

我真的不知道为什么在这里尝试验证属性代码中的输入值时会出现此错误:

using ConsoleApplication4.Interfaces;

public struct Vector:IComparable
{
    private Point startingPoint;

    private Point endPoint;

    public Point StartingPoint  
    {
        get
        {
            return new Point(startingPoint);
        }
        set
        {
            if(value != null)
                this.startingPoint = value;
        }
    }

    public Point EndingPoint
    {
        get
        {
            return new Point(this.endPoint);
        }
        set
        {
            if(value != null)
                this.startingPoint = value;
        }
    }

我得到的错误在我有ifvalue的行上=null

结构是一种值类型-它不能像类那样为null。但是,您可以使用可为null的或Point?。

结构是一种值类型-它不能像类那样为null。但是,您可以使用可空的或点?。

点是一个结构,因此不能为空

你能用点吗?这是System.Nullable的语法糖。阅读有关可空类型的更多信息,请访问

如果要与Point的默认值(与null不同)进行比较,则可以使用default关键字:

if(value != default(Point))

Point是一个结构,因此不能为null

你能用点吗?这是System.Nullable的语法糖。阅读有关可空类型的更多信息,请访问

如果要与Point的默认值(与null不同)进行比较,则可以使用default关键字:

if(value != default(Point))
结构是值类型,而不是引用类型。这意味着它永远不能为null,特别是它的默认值不为null

简单的经验法则:如果你需要新的,它可以是空的。这有点简单,但是开发人员知道,当这可能是错误的时候,通常不需要经验法则。结构是一种值类型,而不是引用类型。这意味着它永远不能为null,特别是它的默认值不为null


简单的经验法则:如果你需要新的,它可以是空的。这有点简单,但是开发人员知道,当这可能是错误的时候,通常不需要经验法则

我不知道您试图用您的类实现什么,但似乎您可以简单地编写:

public struct Vector: IComparable
{
    public Point StartingPoint {get; set;}
    public Point EndPoint {get; set;}

    // implement IComparable
}

除非您出于任何原因有意创建点的副本,否则我不知道您想在课堂上实现什么,但似乎您可以简单地写下:

public struct Vector: IComparable
{
    public Point StartingPoint {get; set;}
    public Point EndPoint {get; set;}

    // implement IComparable
}

除非您出于任何原因有意创建点的副本,否则这并不意味着我不需要进行检查?是的。值将始终是有效点。此外,您实际上不需要返回新的点。无论如何都将复制值类型。因此,您当前的代码可以简化为公共点StartingPoint{get;set;}那么,这是否意味着我不需要进行检查?是的。值将始终是有效点。此外,您实际上不需要返回新的点。无论如何都将复制值类型。因此,您当前的代码可以简化为公共点StartingPoint{get;set;}