okay - slightly odd - I found a different article that used "string.Format()" (i.e. lower case "s")
and this solves the problem :-)
since I assume (perhaps wrongly) that I'm not the only person who might find this odd, I'll leave my question and answer posted, so it might help someone else save 20 minutes trying to get String.Format() rather than string.Format() working in C# scripts
This has been very illuminating - it is very useful to learn about these "aliases" of classes to act as primitive types (personally I've never been happy with primitive types in any OO language, they spoil the clarity and simplicity of taking an objects-only view - I've always had a softspot for Smalltalk ...)
I found the following link useful, which summarises a list of aliases and the actual classes they are aliases for:
while UnityAnswers keeps asking me if I want to answer my own question, I keep saying yes ... since I think this discussion is something useful for people like me who can program (I've been programming for over 30 years - they keep on creating new programming concepts like design patterns and object-orientation, and lots of new languages like Python and ActionScript) but are new to C# and unity ...
now to get back to that pacman tile-based world game sample I'm getting ready for my lecture on Friday to some year 2 BSc computing students...