That either is inefficient (you end up parsing each number twice) or requires the compiler to have deep knowledge of the standard library.
Similarly, C# has TryGet where in Java, you need a containsKey/get combo, or have to assume your collections do not store nulls.
I do think C# could do better, though. Neither C# nor Java have the equivalent of "insert ... on duplicate key ..." for collections. You now have to do:
items.TryGet( key, out value);
items[key] = value + 1;
In C++, that would just be:
items[key] += 1;