One of the first compilers I worked with, VS-Pascal, had a very “HAL-like” confident behaviour, after it had finished a succesful compile, it wrote:
“No compiler detected errors”
I found that almost rude, but it was also something to keep in the back of your mind, and today I remembered this clearly.
For the last week or so I’ve had a mysterious ASP.NET/C# problem on the back-burner. I’m trying to populate a drop-down list on a webpage. The list is based on a list of documents. For that purpose I had an entity class with a constructor, in the Page_Load code of the webform, I’m initialising the drop-down with a desciption and an id from the document list.
The list was populated just fine, but when I did a post of the form, I was consistently told that the first item was selected, even if I selected item number 2, 3 or 4.
This was very frustrating, especially because I have two drop-downs, and the other was working just fine.
Today I couldn’t postpone the problem any longer, and I tried a number of things, including moving the drop-downs, and finally I started doing websearches for bug-reports, but it’s extremely unlikely that ASP.NET has such a fundamental bug, so I was clearly doing something wrong.
When you’re using frameworks like .NET, a lot is done behind the scenes, luckily I know HTML so I finally hit View/Source, and to my surprise all the option values in the select tag were set to 0, why was that, I knew that my list was initialised to values from 0-4, but it was consistent with the test-results.
I was clearly doing something wrong. Below is the C# source-code for the entity class, can you spot the problem?
public class ShredYearDocument
{
private int _shredYearId;
public int ShredYearId
{
get { return _shredYearId; }
set { _shredYearId = value; }
}
string _shredYearDescription;
public string ShredYearDescription
{
get { return _shredYearDescription; }
set { _shredYearDescription = value; }
}
public ShredYearDocument(int ShredYeadId,
string ShredYearDescription)
{
_shredYearId = ShredYearId;
_shredYearDescription = ShredYearDescription;
}
}
I’ll give you a hint: there are no compiler detected errors, but I’d argue that the compiler should,at least, have generated a warning, because I have something that could be likened to unused, or uninitalised, local variables.
Another hint: Remember that I always had the id set to zero (0), no mater what.
But shouldn’t the compiler generate a warning here?
