C# 是否有一种更干净/更简单的方法来实现a在(aa、bb、cc)中的等效位置?
有人知道是否有一种更干净/更简单的方法来做同样的事情吗 还有,我应该注意的副作用是什么C# 是否有一种更干净/更简单的方法来实现a在(aa、bb、cc)中的等效位置?,c#,linq,C#,Linq,有人知道是否有一种更干净/更简单的方法来做同样的事情吗 还有,我应该注意的副作用是什么 var setters = from setterBase in Style.Setters let setter = (setterBase as Setter) let properties = new []{ HorizontalContentAlignmentProperty, VerticalContentAlignmentProperty }
var setters = from setterBase in Style.Setters
let setter = (setterBase as Setter)
let properties = new []{ HorizontalContentAlignmentProperty, VerticalContentAlignmentProperty }
where setter!=null && properties.Contains(setter.Property)
select setterBase;
到目前为止,这是我想到的最好的…不太好。对于两个选项,使用
或
可能更具可读性,并且您可以使用类型为的,而不是作为
-cast和firstlet
<类型为的code>不会返回null
元素,因此您也可以删除该筛选器:
var setters = from setter in Style.Setters.OfType<Setter>()
where (setter.Property == HorizontalContentAlignmentProperty ||
setter.Property == VerticalContentAlignmentProperty)
select setter;
var setters=来自Style.setters.OfType()中的setter
其中(setter.Property==HorizontalContentAlignmentProperty||
setter.Property==VerticalContentAlignmentProperty)
选择设定器;
不太可能。对于两个选项,使用或
可能更具可读性,并且您可以使用类型为的,而不是作为
-cast和firstlet
<类型为的code>不会返回null
元素,因此您也可以删除该筛选器:
var setters = from setter in Style.Setters.OfType<Setter>()
where (setter.Property == HorizontalContentAlignmentProperty ||
setter.Property == VerticalContentAlignmentProperty)
select setter;
var setters=来自Style.setters.OfType()中的setter
其中(setter.Property==HorizontalContentAlignmentProperty||
setter.Property==VerticalContentAlignmentProperty)
选择设定器;
我会这么做。我仍然喜欢将属性放在数组中,以便轻松支持更多属性。很好
var setters = from setter in Style.Setters.OfType<Setter>()
let properties = new []{ HorizontalContentAlignmentProperty, VerticalContentAlignmentProperty }
where properties.Contains(setter.Property)
select setter;
var setters=来自Style.setters.OfType()中的setter
let properties=new[]{HorizontalContentAlignmentProperty,VerticalContentAlignmentProperty}
其中properties.Contains(setter.Property)
选择设定器;
我会这么做。我仍然喜欢将属性放在数组中,以便轻松支持更多属性。很好
var setters = from setter in Style.Setters.OfType<Setter>()
let properties = new []{ HorizontalContentAlignmentProperty, VerticalContentAlignmentProperty }
where properties.Contains(setter.Property)
select setter;
var setters=来自Style.setters.OfType()中的setter
let properties=new[]{HorizontalContentAlignmentProperty,VerticalContentAlignmentProperty}
其中properties.Contains(setter.Property)
选择设定器;
无需为每个setter创建新的数组
var properties = new []{
HorizontalContentAlignmentProperty,
VerticalContentAlignmentProperty };
var setters = from setter in Style.Setters.OfType<Setter>()
where properties.Contains(setter.Property)
select setter;
var properties=new[]{
HorizontalContentAlignmentProperty,
VerticalContentAlignmentProperty};
var setters=来自Style.setters.OfType()中的setter
其中properties.Contains(setter.Property)
选择设定器;
无需为每个setter创建新的数组
var properties = new []{
HorizontalContentAlignmentProperty,
VerticalContentAlignmentProperty };
var setters = from setter in Style.Setters.OfType<Setter>()
where properties.Contains(setter.Property)
select setter;
var properties=new[]{
HorizontalContentAlignmentProperty,
VerticalContentAlignmentProperty};
var setters=来自Style.setters.OfType()中的setter
其中properties.Contains(setter.Property)
选择设定器;
不错!我刚才也在用打字机重写。使用OfType时,您不需要进行null检查,对吗?@Robert-我不确定-集合可能包含null
s,但您可能可以将其删除。(setter!=null)是多余的,因为null永远不会计算为setter类型。如果集合中有null,则它们将不是setter类型。:)你们都是对的,我不确定,只是测试了一下以确认。谢谢美好的我刚才也在用打字机重写。使用OfType时,您不需要进行null检查,对吗?@Robert-我不确定-集合可能包含null
s,但您可能可以将其删除。(setter!=null)是多余的,因为null永远不会计算为setter类型。如果集合中有null,则它们将不是setter类型。:)你们都是对的,我不确定,只是测试了一下以确认。谢谢感谢您指出“let”每次都会重新创建数组,我忘记了那个。。。这取决于两个集合的大小(‘属性’和‘SETER’’)会有很大的影响,如果属性有很大的大小,考虑使用HasSeT而不是数组。谢谢指向“让”每次重新创建数组,我忘记了一个。这取决于两个集合(‘属性’和‘SETER’)的大小会有很大的影响,如果属性具有很大的大小,考虑使用HasSeT而不是数组。