gpt4 book ai didi

c# - 将值列表分配给 C# 中的结构?

转载 作者:太空狗 更新时间:2023-10-29 23:03:39 24 4
gpt4 key购买 nike

我有一个结构(.NET 3.5):

struct ColumnHeadings 
{
public string Name ;
public int Width ;
} ;

当我尝试为该结构分配一个值列表时,我得到一个“无法将类型字符串/int 隐式转换为...”:

private void doSomething()
{
ColumnHeadings[,] ch = new ColumnHeadings[,]{{"column1",100},
{"column2",100},{"column3",100}};
}

是否可以像多维数组一样为结构体赋值?还是我需要通过使用分配值?:

ch.Name = "column 1";

更新:

感谢 Marc 的出色反馈,正确的解决方案是:

结构:

struct ColumnHeadings
{
private readonly string name;
private readonly int width;
public string Name { get { return name; } }
public int Width { get { return width; } }
public ColumnHeadings(string name, int width)
{
this.name = name;
this.width = width;
}
}

然后在方法中:

 var ch = new[]{new ColumnHeadings("column1",100),
new ColumnHeadings("column2",100),
new ColumnHeadings("column3",100)};

还有 link为什么可变结构不是一个好主意。

最佳答案

首先,那可能根本不应该是一个struct

语法将是:

ColumnHeadings[] ch = new ColumnHeadings[]{
new ColumnHeadings{Name="column1",Width=100},
new ColumnHeadings{Name="column2",Width=100}
};

但是,除此之外还有公共(public)字段的问题,以及这是一个可变结构的事实——这两者都是危险的。不,真的。

我会添加一个构造函数:

var ch = new []{
new ColumnHeadings("column1", 100),
new ColumnHeadings("column2", 100)
};

与:

struct ColumnHeadings
{
private readonly string name;
private readonly int width;
public string Name { get { return name; } }
public int Width { get { return width; } }
public ColumnHeadings(string name, int width)
{
this.name = name;
this.width = width;
}
}

关于c# - 将值列表分配给 C# 中的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324815/

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