I used to have in my code the following class
public class SomeListClass
{
public List<Boolean> ListA {get; set;}
public List<Boolean> ListB {get; set;}
public List<String> ListStringsA {get; set;}
public List<String> ListStringsB {get; set;}
public List<String> ListStringsC {get; set;}
public List<String> ListStringsD {get; set;}
public void InitLists()
{
ListStringsA = ListStringsB = ListStringsC = ListStringsD = new List<String>();
ListA = ListB = new List<Boolean>();
}
}
What did I notice using this initialisation and the following piece of code:
SomeListClass itm = new SomeListClass();
itm.InitLists();
itm.ListStringsA.Add("TestString");
itm.ListA.Add(true);
- If I add a String to
ListStringsA
, then it gets only added toListStringsA
- If I add a Boolean to
ListA
then it get automatically added toListB
So the result would be:
ListStringsA = {"TestString"}
ListStringsB = {}
ListStringsC = {}
ListStringsD = {}
ListA = {true}
ListB = {true}
What is the reason herefor? Could someone point me some to some documentation explaining this odd behavior? I can't seem to find anything.
Note: This solved it:
public void InitLists()
{
ListStringsA = ListStringsB = ListStringsC = ListStringsD = new List<String>();
ListA = new List<Boolean>();
ListB = new List<Boolean>();
}
Note: Some simplyfied production code:
I get a list of type SomeListObject
(see Below) named objectList
public class SomeListObject {
public String SomeListObjectName {get; set;}
public Boolean SomeListObjectNeeded {get; set;}
public Boolean SomeListObjectOk {get; set;}
}
The list contains 2 items:
objectList = {{SomeListObjectName = "PersonA", SomeListObjectNeeded = true, SomeListObjectOk = false},{SomeListObjectName = "PersonB", SomeListObjectNeeded = true, SomeListObjectOk = false}}
Then I do a foreach:
SomeListClass itm = new SomeListClass();
itm.InitLists();
foreach (SomeListObject myObj in objectList )
{
ListStringsA.Add(myObj.SomeListObjectName);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {}
// ListB: {}
ListA.Add(myObj.SomeListObjectNeeded);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {true}
// ListB: {true}
ListB.Add(myObj.SomeListObjectNeeded);
// ListStringsA: {"PersonA"}
// ListStringsB: {}
// ListA: {true, false}
// ListB: {true, false} <=== Say What now???
}