How are properties for a Collection set?
I've created a class with a Collection properties. I want to add to the List anytime I set a new value. Using _name.Add(value) within the set method doesn't work.
Section newSec = new Section();
newSec.subHead.Add("test string");
newSec.subHead.Add("another test string");
public class Section
{
public String head { get; set; }
private List<string> _subHead = new List<string>();
private List<string> _content = new List<string>();
public List<string> subHead
{
get
{ return _subHead; }
set
{
_subHead.Add(value);
}
}
public List<string> content
{
get
{ return _content; }
set
{
_content.Add(value);
}
}
}
Update with my solution:
public class Section
{
private List<string> _head = new List<string>();
private List<string> _subHead = new List<string>();
private List<string> _content = new List<string>();
public List<string> Head
{
get
{ return _head; }
}
public List<string> SubHead
{
get
{ return _subHead; }
}
public List<string> Content
{
get
{ return _content; }
}
public void AddHeading(string line)
{
Head.Add(line);
}
public void AddSubHeading(string line)
{
SubHead.Add(line);
}
public void AddContent(string line)
{
Content.Add(line);
}
}
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr. Stroustroupe.
C is more difficult to learn than JavaScript, but it's a valuable skill to have because most programming languages are actually implemented in C. This is because C is a “machine-level” language. So learning it will teach you how a computer works and will actually make learning new languages in the future easier.
It would be inappropriate for it to be part of the setter - it's not like you're really setting the whole list of strings - you're just trying to add one.
There are a few options:
AddSubheading
and AddContent
methods in your class, and only expose read-only versions of the listsIn the second case, your code can be just:
public class Section
{
public String Head { get; set; }
private readonly List<string> _subHead = new List<string>();
private readonly List<string> _content = new List<string>();
// Note: fix to case to conform with .NET naming conventions
public IList<string> SubHead { get { return _subHead; } }
public IList<string> Content { get { return _content; } }
}
This is reasonably pragmatic code, although it does mean that callers can mutate your collections any way they want, which might not be ideal. The first approach keeps the most control (only your code ever sees the mutable list) but may not be as convenient for callers.
Making the setter of a collection type actually just add a single element to an existing collection is neither feasible nor would it be pleasant, so I'd advise you to just give up on that idea.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With