>
>
>
V3138. String literal contains potentia…


V3138. String literal contains potential interpolated expression.

The analyzer has detected a string that could contain an interpolated expression, but there is no interpolation character '$' before the literal.

Consider the following snippet:

string test = "someText";
....
Console.WriteLine("{test}");

Because of the absent '$' character before the string declaration, the console will simply output the name of the variable. This is the correct notation:

string test = "someText";
....
Console.WriteLine($"{test}");

Strings with expressions inside them are also treated as potential errors:

int a = 1;
int b = 1;
string test = "{a:c} test";
string test1 = "{a+b} test1 {{{ a + b }}}";

However, an exception is made for string literals passed as arguments to methods whose other arguments are variables contained in that same literal.

string test1 = ReplaceCustom("someText {test}", "{test}", test);

In cases like this, the expression in the literal is often a placeholder for the value of the variable passed along with it to the same method.

You can look at examples of errors detected by the V3138 diagnostic.