小编Leg*_*gth的帖子

'ref'关键字和AppDomains

当我开始使用C#时,我不确定如何精确地处理引用(它们是否被值传递等).我错误地认为在传递被调用方法修改的对象时需要'ref'关键字.

然后读取线程等之后这个,我意识到,当你需要改变实际参考/指针本身只需要"裁判".

但是今天我在通过远程调用传递参数时遇到了一个问题,其中实际上需要ref来修改对象的内容.在没有引用的情况下传递时,对象恢复原状.我被告知要添加ref关键字,但我争论了一段时间,只有在更改指针本身时才需要它,而不是指向的内容.

我在网上搜索过,只能找到一个简单讨论它的页面.这是一个已知问题,是否有人能够指出一些有关它的文档?在我看来,我现在必须使用ref来通过远程调用修改任何参数.

c# remoting

7
推荐指数
1
解决办法
528
查看次数

不可变事件处理

我用Java实现了一个不可变的系统.几乎每个班级都是不可改变的,并且它比我预期的要好得多.

我的问题是尝试发送事件.通常,您有一个事件源和一个事件监听器.源只是保存对侦听器的引用,并在事件发生时发送事件.

但是对于不可变,当您修改字段并创建新对象时,事件侦听器引用会发生更改.所以事件源发送到一些垃圾收集的旧引用.

因此,我的所有GUI类都是可变的,因为它们自然会使用很多事件.但我想找到一种处理事件的优雅方式,这样我就可以使这些事件变得不可变.

编辑:请求的示例代码:

public final class ImmutableButton {
    public final String text;

    public ImmutableButton(String text) {
        this.text = text;
    }

    protected void onClick() {
        // notify listeners somehow, hoping they haven't changed
    }
}

public final class ImmutableWindow {
    public final ImmutableButton button;

    public ImmutableWindow(ImmutableButton button) {
        this.button = button;
    }

    protected void listenForButtonClick() {
        // somehow register with button and receive events, despite this object
        // being entirely recreated whenever a field changes
    }
}
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
617
查看次数

标签 统计

c# ×1

java ×1

remoting ×1