string.GetHashCode()的32位和64位版本之间的差异背后的技术原因是什么?
更重要的是,为什么64位版本在遇到NUL字符时似乎终止了它的算法?例如,在64位CLR下运行时,以下表达式都返回true.
"\0123456789".GetHashCode() == "\0987654321".GetHashCode()
"\0AAAAAAAAA".GetHashCode() == "\0BBBBBBBBB".GetHashCode()
"\0The".GetHashCode() == "\0Game".GetHashCode()
Run Code Online (Sandbox Code Playgroud)
当我们将这样的字符串用作Dictionary中的键时,这种行为(bug?)表现为性能问题.
我试图了解像App-V和sandboxie(http://www.sandboxie.com/)这样的软件是如何工作的.但对于我的生活,我想不出任何可能使这成为可能的事情.他们如何拦截API调用并欺骗目标软件?如果有人会说它只是魔法和小精灵,我会相信它们.但是说真的,有没有白皮书讨论这个问题的解决方案?
如果这在CLR级别上是可能的那么那将是好的但是如果必须的话我愿意去本地.
我有一个托管其他控件的用户控件.我实现这一点的方法是通过数据模板来定义应该与特定视图模型相关联的控件.这些视图模型具有类似的属性和交互触发器.请参阅下面的XAML代码段.
这种方法的问题是,如果我想支持新的视图模型,我将不得不复制粘贴数据绑定.有没有办法将所有类似的数据绑定和/或触发器整合到一个模板中?我不想将相同的数据绑定定义键入/复制粘贴到每个控件中.(是的,我知道,我很懒.)
<UserControl.Resources>
<DataTemplate DataType="{x:Type vm:SomeViewModel1}">
<TextBlock Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding MouseEnterCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<cmd:EventToCommand Command="{Binding MouseLeaveCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SomeViewModel2}">
<Rectangle Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding MouseEnterCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<cmd:EventToCommand Command="{Binding MouseLeaveCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SomeViewModel3}">
<Button Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter"> …Run Code Online (Sandbox Code Playgroud)