C# 详细版本更好还是更详细?

C# 详细版本更好还是更详细?,c#,winforms,generics,data-binding,datasource,C#,Winforms,Generics,Data Binding,Datasource,我以这种方式填充了一个组合框(getRoundingMethodVals()返回一个列表): …但我在StackOverflow上看到了以下答案: comboBox1.DataSource = new BindingSource(dict, null); …这让我想知道是否应该将代码更改为: comboBoxRounding.DataSource = new BindingSource(RateSetupData.getRoundingMethodVals(), null); 这是一种六合一

我以这种方式填充了一个组合框(getRoundingMethodVals()返回一个列表
):

…但我在StackOverflow上看到了以下答案:

comboBox1.DataSource = new BindingSource(dict, null);
…这让我想知道是否应该将代码更改为:

comboBoxRounding.DataSource = new BindingSource(RateSetupData.getRoundingMethodVals(), null);

这是一种六合一的情况吗?还是一种方式比另一种方式具有强大的优势?

取决于你想做什么。如果您只需要填充组合框让用户选择一个值,那么您的第一种方法工作得非常好。这是一个单向数据流:从lsit到控制。在您的例子中,一个简单的列表(字符串)不需要绑定源


但是,如果您有一个更复杂的对象,并且希望通过更改combobox值来同时更改该对象的值,则可以使用BindingSource。这将创建一个双向数据流。(对于这种情况,您可以使用实现许多BindingSource接口的BindingList。)

可能应该删除“verboten”,它在德语中表示“禁止/禁止”,在(我的)英语俚语中相当常见。无论如何,这会使问题偏离主题。@pst:为什么?我知道这意味着什么——我说德语——这符合我的意图。当然,这不是字面上的禁止,但你明白我的意思,我相信。。。在这种情况下,标题(仍然)有问题:尽量避免使用好斗的语言,并利用空间更好地总结问题。
comboBoxRounding.DataSource = new BindingSource(RateSetupData.getRoundingMethodVals(), null);