【发布时间】:2012-10-12 05:59:29
【问题描述】:
我很抱歉这个奇怪的标题,但我无法弄清楚如何表达它:) 我最近转向 C#,目前我正在研究结构。我基本上是一名 C++ 开发人员,在我的 C++ 代码中我完成了以下操作:
typedef struct
{
String ChannelName;
bool available;
} Voltage_Channel;
Voltage_Channel *m_voltageChannels;
Voltage_Channel redhookChannels[6] = {
{"", false},
{"VDD_IO_AUD", true},
{"VDD_CODEC_AUD",true},
{"VDD_DAL_AUD", true},
{"VDD_DPD_AUD", true},
{"VDD_PLL_AUD", true}
};
if(m_boardName->compareIgnoreCase("S1010012") == 0) //m_BoardName is string
{
m_voltageChannels = redhookChannels;
}
我需要在我的 c# 应用程序中执行此操作。我尝试如下,但有问题:
struct VoltageBoardChannel
{
public string ChannelName;
public bool available;
};
VoltageBoardChannel[] mVoltageStruct;
VoltageBoardChannel[] redhookChannels = new VoltageBoardChannel[6]
{
new VoltageBoardChannel() { ChannelName = "", available = false},
new VoltageBoardChannel() { ChannelName = "VDD_IO_AUD", available = true},
new VoltageBoardChannel() { ChannelName = "VDD_CODEC_AUD", available = true},
new VoltageBoardChannel() { ChannelName = "VDD_DAL_AUD", available = true},
new VoltageBoardChannel() { ChannelName = "VDD_DPD_AUD", available = true},
new VoltageBoardChannel() { ChannelName = "VDD_PLL_AUD", available = true}
};
string redhookboardname = "S1010012";
string redhookboardnameCase = "s1010012";
if (redhookboardnameCase.Equals(redhookboardname, stringComparison.InvariantCultureIgnoreCase))
{
mVoltageStruct = redhookChannels;
}
我在哪里做错了??? :(
【问题讨论】:
-
您要分配什么
mVoltageStruct?你想分配数组的第一项redhookChannels吗? -
我想将redhookChannels的所有值赋值给
mVoltageStruct -
@StonedJesus 但这是什么意思?例如:你有一个变量可以容纳一个“人”,以及一个包含 6 个“人”的列表;如何将所有 6 个“人”的值分配给单个“人”变量?在我看来,
m_voltageChannels是指向数组中第一项的指针,但这并不是在复制 anything。 -
嗯 mVoltageStruct 是一个单项结构,而您的
redhookChannels是一个数组,在您的 C++ 代码中,您将其分配给结构类型的指针,在 C# 中,您定义了另一个数组并制作它的副本。 -
@Habib 你根本没有有这样做;正确的下一步很大程度上取决于你想用它做什么,以及你想如何表现。复制数组将显着改变行为,例如,如果我们通过指针更改值,数组内容是否更新?