I need advice on structures.
I have 2 sections of code. The first section is as below:
namespace Project.GlobalVariables { class IOCard { struct InputCard { public string CardNo; public int BaseAddress; public int LowerAddress; public int UpperAddress; public int[] WriteBitNo = new int[16]; public int[] ReadBitNo = new int[16]; } static InputCard[] InputCards = new InputCard[5]; public static string ACardNo = InputCards[1].CardNo; public static string BCardNo = InputCards[2].CardNo; } } The second portion is as below:
private void Form1_Load(object sender, EventArgs e) { IOCard.ACardNo = "Card A"; IOCard.BCardNo = "Card B"; MessageBox.Show(IOCard.ACardNo); MessageBox.Show(IOCard.BCardNo); } My plan is to be able to assign and retrieve InputCards component by using IOCard as shown in Form1_Load.
However, when I compile the code, I get the following error.
Error 1 'Project.GlobalVariables.IOCard.InputCard.WriteBitNo': cannot have instance field initializers in structs E:\Programming\New platform\StandardPlatform\StandardPlatform\Project\GlobalVariables.cs 16 26 StandardPlatform
Can someone tell me how to solve the error? Please advise. Thanks.
Here are the classes that I have attempted to create and use, but failed.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Project.GlobalVariables { static class IOCard { public const int TotalInputCard = 10; public const int TotalOutputCard = 10; public class InputCard { public string CardNo = "1"; public int BaseAddress; public int LowerAddress; public int UpperAddress; public int[] WriteBitNo = new int[16]; public int[] ReadBitNo = new int[16]; } public class OutputCard { public string CardNo; public int BaseAddress; public int LowerAddress; public int UpperAddress; public int[] WriteBitNo = new int[16]; public int[] ReadBitNo = new int[16]; } public static InputCard[] InputCards = new InputCard[TotalInputCard]; public static OutputCard[] OutputCards = new OutputCard[TotalOutputCard]; public static int X100 = InputCards[0].WriteBitNo[0]; public static int Y100 = OutputCards[0].WriteBitNo[0]; } } I tried to use these in the Form_Load, like so:
private void Form1_Load(object sender, EventArgs e) { IOCard.X100 = 1; IOCard.Y100 = 1; } No matter how much I have tried to search on the net for answers, I have got nowhere.
Please advise. Thanks.