C# 尝试将参数与属性进行比较
我有一个属性为CostA的类 我在那个类中有一个函数叫做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
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()那样进行比较?“相同属性”:“不同属性”
。值类型项不包含类型和值。