If you need string.Format, use it. However be aware that string.Format is quite expensive in terms of performance, therefore I recommend to
- use string.Concat if feasible
- use StringBuilder for more cases that don't need special formatting of values
- If there are any conditions that might prevent the resulting string to be used, check those conditions before calling string.Format
- Especially in the case of tracing (where string.Format ist used regularly) avoid calling string.Format unless you know that tracing is actually done (e.g. check the tace level before calling string.Format). This way you make sure that tracing will introduce minimal overhead when disabled.