相关疑难解决方法(0)

虚拟成员在构造函数中调用

我从ReSharper收到一条关于从我的对象构造函数调用虚拟成员的警告.

为什么不做这件事?

c# resharper constructor warnings virtual-functions

1270
推荐指数
11
解决办法
17万
查看次数

我应该使用包含构造函数中的其他逻辑的setter吗?

每当设置一个新列表时,我有一个类需要在列表上重置其内部迭代器:

public class ListElementReceiver implements ElementReceiver {
    private List<Element> elements;
    private Iterator<Element> elementIter;

    public void reset() {
        elementIter = elements.iterator();
    }

    public void setElements(List<Element> elements) {
        this.elements = elements;
        reset();
    }
}
Run Code Online (Sandbox Code Playgroud)

它基本上只是一个列表及其迭代器的包装器,所以我可以将它与我给定的接口一起使用ElementReceiver.我遇到的问题是为这个类构建构造函数.哪两种方法更可取?

// Approach 1: Duplicate logic, independant of Setter
public ListElementReceiver() {
    elements = new List<Element>();
    reset();
}

public ListElementReceiver(List<Element> elements) {
    this.elements = elements;
    reset();
}

//Approach 2: Make dependant on Setter
public ListElementReceiver() {
    setElements(new List<Element>());
}

public ListElementReceiver(List<Element> elements) {
    setElements(elements);
}
Run Code Online (Sandbox Code Playgroud)

java

-1
推荐指数
1
解决办法
46
查看次数

标签 统计

c# ×1

constructor ×1

java ×1

resharper ×1

virtual-functions ×1

warnings ×1