gpt4 book ai didi

c# - Windows Phone 上的 Reactive Extensions 错误

转载 作者:IT王子 更新时间:2023-10-29 03:34:21 24 4
gpt4 key购买 nike

使用 VS 2012 编译,项目类型为 WP 8.0 如果未附加调试器,以下代码将失败。

不知何故,如果未附加调试器,编译器优化会破坏 Crash() 中的代码 - 请参阅代码中的注释。

Lumia 1520 (8.1)Lumia 630 (8.0) 上测试。

知道为什么会这样吗?

public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
Button.Tap += (sender, args) => new A<B, string>(new B(), "string").Crash();
}
}
public class B
{
public void Foo<T>(T val) { }
}
public class A<T1, T2> where T1 : B
{
private T1 _t1;
private T2 _t2;
public A(T1 t1, T2 t2)
{
_t2 = t2;
_t1 = t1;
}
public void Crash()
{
var obs = Observable.Return(_t2);
obs.Subscribe(result =>
{
//CLR is expecting T2 to be System.String here,
//but somehow, after passing through Observable
//T2 here is not a string, it's A<T1, T2>

new List<T2>().Add(result);
});
//Will run normally if commented
_t1.Foo(new object());
}
}

最佳答案

 _t1.Foo<type>(type);

您缺少类型声明。编译器在猜测(而且猜错了)。严格键入所有内容,它应该会运行。

关于c# - Windows Phone 上的 Reactive Extensions 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24610216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com