gpt4 book ai didi

C#:重写初始化方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:02 26 4
gpt4 key购买 nike

在 android java 中,如果我想使用来自非原始线程的 View ,我会这样写:

Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
String text = (String) msg.obj;
myTextView.setText(text);
}
};

一切正常。但是在 xamarin C# 中我写:

Handler h = new Handler()
{
public override void HandleMessage (Message msg)
{

}
};

并查看无效的初始值设定项成员声明符

如何重新加载HandleMessage 方法?我可以通过任何其他方式使用来自另一个线程的 View 吗?


编辑:@AntP,这种方式在 xamarin 中不起作用:只有创建 View 层次结构的原始线程才能触及它的 View 。但感谢您的支持。

解决方法:

mActivity.RunOnUiThread(delegate
{
mTextView.Text = ("Test");
});

最佳答案

您不能覆盖对象初始值设定项中的方法。您必须声明一个继承 Handler 并覆盖 HandleMessage 的类:

public class MyHandler : Handler
{
public override void HandleMessage (Message msg)
{
// Some stuff
}
}

来自 MSDN :

Anonymous types contain one or more public read-only properties. No other kinds of class members, such as methods or events, are valid. The expression that is used to initialize a property cannot be null, an anonymous function, or a pointer type.

因此,匿名类型只能包含公共(public)属性。不是方法。

关于C#:重写初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507706/

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