本文主要是介绍当c#中某属性的值要根据自己所在类的其他属性的值计算得出时的注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目标:如下程序,想要达到的目的是,属性Price的值需要利用Size的值来判断求出。
public class OrderEventArgs : EventArgs {public string Size { get; set; }private int price;public int Price { set{//this.price = value;if(this.Size == "large"){this.price = 20;}}get{return this.price;} }}
遇到的问题:我在主程序中使用了如下方式,然而运行结果是错误的,得出是0。
OrderEventArgs orderEventArgs = new OrderEventArgs(); orderEventArgs.Size = "large";Console.WriteLine(orderEventArgs.Price);
原因: 原因是在创建实例时调用了类的默认构造函数,此时Size的值为空,Price的值是0。之后执行赋值语句orderEventArgs.Size = "large"后Size属性里的逻辑才会运行,Size值也会刷新为large。而Price属性里的逻辑根本没有运行,因此结果显示是0。
解决方法: 将Price值刷新,虽然给Price赋值没有什么意义,但可以使其运行内部的逻辑来根据Size的值判断出Price的值,此时结果就可得出20,符合要求。以下两种方式的内部执行逻辑顺序完全相同。
OrderEventArgs orderEventArgs = new OrderEventArgs(){ Size = "large",Price = 99999};
OrderEventArgs orderEventArgs = new OrderEventArgs(); orderEventArgs.Size = "large";orderEventArgs.Price = 99999;
这篇关于当c#中某属性的值要根据自己所在类的其他属性的值计算得出时的注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!