Просто чтобы прояснить ситуацию ... CLR не участвует в интернировании строк.Interning - это концепция времени компиляции, а R в CLR - среда выполнения.
Кроме того, строковые переменные не интернированы.Строка литералы интернированы.Строковый литерал - это материал справа, например
var variable = "This is a literal.";
Когда компилятор замечает, что в вашем коде есть строковый литерал, он должен добавить его в таблицу ресурсов, встроенную в вашу сборку.Когда он добавляет его, он проверяет, существует ли он, и если он делает, он просто использует существующую запись.После завершения компиляции вся таблица отправляется в сборку, где она может быть прочитана вашим кодом во время выполнения.