The short answer, of course, is when it's a short, but that's not why the following code throws an error:
(CanContactGeneral == string.Empty ? 0 : Convert.ToInt16(CanContactGeneral))
Here we are evaluating a string to determine whether to use a number or a 0. And the error that gets thrown is Type of conditional expression cannot be determined because 'int' and 'short' implicitly convert to one another. Which makes perfect sense, I was being lazy and should have handled this better, but I was asking the compiler to turn this expression into either an int or a short but not giving it any guidance. So I could change the 0 to Convert.ToInt16(0), but then I realized I was using this in a string.Format, so I just eliminated the Convert statement and all was well.