Linq OrderBy的字节与布尔值
在排序中使用一个字节超过一个布尔值有什么性能优势吗 例如,给定一些代码:Linq OrderBy的字节与布尔值,linq,sorting,boolean,byte,ienumerable,Linq,Sorting,Boolean,Byte,Ienumerable,在排序中使用一个字节超过一个布尔值有什么性能优势吗 例如,给定一些代码: var foo = items.OrderByDescending(item => item.SomeProperty); 获取SomeProperty值的现有代码为: public byte SomeProperty { get { if (a == b) return 1; else return 0; }
var foo = items.OrderByDescending(item => item.SomeProperty);
获取SomeProperty值的现有代码为:
public byte SomeProperty
{
get
{
if (a == b)
return 1;
else
return 0;
}
}
我想将其重构为:
public bool SomeProperty
{
get
{
a == b
}
}
有人告诉我第一个更有效。这是真的吗?在一个字节上使用bool有什么缺点吗 效率很难体现在处理效率上。这将提高开发代码的效率:代码容易理解吗?类似物品是否易于重复使用?如果内部结构在不改变界面的情况下发生变化,是否易于改变?容易测试 在设计房产时,你的第一个问题应该是:我的房产代表什么?这是什么意思?它是否具有用户期望的标识符和类型,或者他们是否必须在文档中查找它,因为他们不知道它的含义 例如,如果您有一个表示某种持久性的类,如文件,并且您发明了一个属性,那么哪一个更容易理解:
class Persistable
{
public int IsPersisted {get;}
public bool IsPersisted {get;}
...
哪一个读者会立即知道它的意思
所以现在你关于持久化的想法可以有两个值,即尚未持久化和持久化。一个布尔值就足够了。但是,如果您预见到在不久的将来,关于持久性的想法将发生变化,例如,持久化的内容可以不持久化,但在被持久化删除之后,可以进行持久化更改。如果你预见到了这一点,你就必须决定是否最好退回bool。也许您应该返回一个枚举:
public PersistencyState State {get;}
结论:设计属性和方法的标识符和类型,以便用户的学习曲线较低,并且可预见的更改不会产生很大影响。确保属性易于测试和维护。在极少数情况下,可移植性是一个问题
与两个代码更改相比,这些项目对效率的影响更大
回到你的问题上来
如果你想一想某个属性代表什么,你会想:它代表a和b的相等,那么你应该使用:
公共bool EqualAB=>a==b
如果您的问题是是否应该使用get或=>,第一个方法将调用子例程,如,而第二个方法将插入代码。如果=>后面的部分相当大,并且您在数百个位置上使用它,那么您的代码将变得更大
但话说回来:如果你的收入真的很大,你应该把它变成一个财产吗
public string ElderName
{
get
{
myDataBase.Open()
var allCustomers = myDataBase.FetchAllCustomers().ToList();
var eldestCustomer = this.FindEldestCustomer(allCustomers);
return eldestCustomer.Name;
}
}
如果在1000个位置上使用=>符号,这将对代码大小产生相当大的影响。但老实说,将其放在属性而不是方法中的设计人员不应该得到高效的代码
最后,我在这里问stackoverflow是否有区别:
string Name {get => this.name;}
string Name => this.name;
答案是它被翻译成了相同的汇编代码非常感谢您的回答!我的问题主要是关于bool vs byte,而不是关于get vs=>。我对问题进行了编辑,以使其更清楚。