(Edited on 30th April to fix a mistake)
It looks like you're trying to add the pieces of a string together - what your code is saying is:
Add "1" + "2" + "3" + "4"
when what your code should say is:
Add 1 + 2 + 3 + 4
The reason it won't work is because you're trying to use a mathematical operator (+) on strings - you need to change them into actual numbers, not strings that contain numbers.
This is because C# is Strongly Typed, meaning that variables have a set Type, e.g. String, Integer, Boolean, etc. and the compiler won't try and guess what Type you mean (the way a language such as PHP does)
If you explicitly cast (that is, force the compiler to treat one Type as another) then it should work.
To cast one variable Type into another in C#, you put brackets around the desired type, in front of the thing you want to cast, e.g.:
double someNumber = 1.67;
int i = (int)someNumber;
Console.WriteLine(i) // outputs 1
However, since a string is made up of Chars, when you take a string and access it using its array indices, e.g. id[21], what you get out is a Char too.
If you try to cast a Char to an Int, what happens is that you get the ASCII code for that Char, so:
string s = "567"; // s[0] = the Char "5"
int i = (int)s[0]; // i does not equal 5 but the ASCII code for the character "5", which is 53.
Console.WriteLine(i * 2); // Outputs 106
To get the actual number you need, you need to tell it to treat the Char as a number and not a character.
This is done with the Char.GetNumericValue method:
string s = "567"; // s[0] = the Char "5"
int i = char.GetNumericValue(s[0]); // i = 5;
Console.WriteLine(i * 2); // Outputs 10
So for your code:
Console.WriteLine("ID?");
String ID = Console.ReadLine();
Console.WriteLine( char.GetNumericValue(ID[2]) + char.GetNumericValue(ID[3]) );
Hope that helps and wasn't too long-winded!
Sorry for the confusion before the edit :-)