Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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# 尝试将参数与属性进行比较_C# - Fatal编程技术网

C# 尝试将参数与属性进行比较

C# 尝试将参数与属性进行比较,c#,C#,我有一个属性为CostA的类 我在那个类中有一个函数叫做FakeClass: public static FakeClass { public decimal MyCostA { get; set; } public decimal MyCostB { get; set; } public string CompareCosts (decimal cost) { return cost == MyCostA ? "same property" : "not

我有一个属性为CostA的类

我在那个类中有一个函数叫做
FakeClass

public static FakeClass {
    public decimal MyCostA { get; set; }
    public decimal MyCostB { get; set; }

    public string CompareCosts (decimal cost) {
       return cost == MyCostA ? "same property" : "not same property"
    }
}

var x = FakeClass.CompareCosts(FakeClass.MyCostA)

如果属性匹配,是否可以进行比较,现在将对值进行比较

否,因为
decimal
不是引用类型

对象与对象的链接一起存储,如下所示

myObjectRef-->Object2.2
y-->3.3

如果您执行了
x=y
,那么您将得到:

x-->3.3
y-->3.3


你不会得到
x-->3.3我认为这样是可能的。因为
MyCostA
是一个
decimal
属性:

class Program
{
    static void Main(string[] args)
    {
        FakeClass.MyCostA = 123;
        var x = FakeClass.CompareCosts(FakeClass.MyCostA);

        Console.WriteLine(x);
        Console.ReadKey();
    }
}

public static class FakeClass {
    public static decimal MyCostA { get; set; }
    public static decimal MyCostB { get; set; }

        public static string CompareCosts(decimal cost)
        {
            return cost == MyCostA ? "same property" : "not same property";
        }
}

在这种情况下,我应该使用什么类型?如果要进行引用比较,可以使用从
Object
派生的任何类型。例如,您可以使用
Decimal
属性创建自己的类。我不知道你为什么要做你正在做的事情,但我觉得这听起来不太对。也许如果你提供更多关于你试图解决的问题的信息,我们可以提出更好的解决方案。你为什么要这样做?这是一个非常特殊的要求。另外,您将从声明为返回小数的方法返回字符串。现在这甚至不会编译hey@DavidG,我有4个属性,
PropA,PropA\u分配,PropB,PropB\u分配
。理想情况下,我只想将
PropA
传递到方法中,并使用三元来确定我需要在方法中使用
PropA\u分配。现在,我正在向我的方法传递
myMethod(PropA,PropA\u分配)
。这没什么大不了的,但我只是想也许我可以简化一下……但后来它变得更复杂了:PI仍然不明白我害怕。无论哪种方式,如果不将值包装到一个类中,您所要求的都是不可能的,这是一个糟糕的想法。也许您应该使用
可空的
?然后,您可以检查属性是否有值,如果没有,则将其设置为if has Then ok,并且您可以使用
Nullable.equal()
方法比较两个
Nullable
对象是否相等。您似乎在检查这里的
123==123
,而不是
MyCostA==MyCostA
。我想看看属性是否相同,而不是值
MyCostA
是十进制属性,
cost
也是十进制参数。那么,在比较上千种东西时,您面临的问题是什么呢?如果您想比较type属性,可以像
cost.GetType()==MyCostA.GetType()那样进行比较?“相同属性”:“不同属性”
。值类型项不包含类型和值。