Abi*_*tro 0 c# design-patterns c#-4.0
我今天早些时候遇到了这个问题,由于我找不到令人满意的解决方案,我决定改变我的班级设计,并且具有单独的属性,如标签1,标签2,标签3等.
我的主要问题是我需要将网格绑定到包含其他属性列表的对象,我需要将列表中的每个项目显示为单独的列,我无法做到.因此,我正在分别声明变量.原始问题在这里......
现在,我正面临着一个最常见的设计问题,可能是每个程序员在某些时候都有这个问题.这是演示它的代码,
for (int i = 0; i < tags.Length; ++i) // Length not known here.
{
if(i==0){
tag1 = tags[0];
}
else if(i == 1){
tag2 = tags[1];
}
else if(i == 2){
tag3 = tags[2];
}
....
}
Run Code Online (Sandbox Code Playgroud)
这tags是一个字符串数组.
我想知道是否有更优雅的方式来做到这一点.另外需要注意的是,这个循环的效率随着它的进展而降低,因为随着迭代次数的增加,它必须检查更多的条件.如果我们知道每个条件在所有迭代中只变为一次,那么我们可以在条件成为真之后移除它.
移动答案DataGridView并使用ComponentModel正确的问题:
在网格视图中显示包含列表的对象列表
简报
该DataGridView控制研究支持ComponentModel命名空间,这样就可以创建一个看起来有不存在的属性的类.它的PropertyGrid用途与机制相同.
示例代码在该问题的答案中:https: //stackoverflow.com/a/13078735/195417
老答复
这是我之前的回答,当时我没有意识到真正的问题是关于DataGridView控制.
这与直接设置值不同:
this.tag1 = tags[0];
this.tag2 = tags[1];
this.tag3 = tags[2];
Run Code Online (Sandbox Code Playgroud)
编辑:正如你所说,你不知道需要多少变量,那么你只需要一个,这是一个列表:
var list = new List<string>();
for (int i = 0; i < tags.Length; ++i)
{
list.add(tags[i]);
}
Run Code Online (Sandbox Code Playgroud)
如果你想要的只是复制所有值,你甚至可以这样做:
var list = new List<string>(tags);
Run Code Online (Sandbox Code Playgroud)
告诉我这是否是你想要的......也许我误解了这个问题.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |