Resharper总是建议我使用const string而不是string。

7 浏览
0 Comments

Resharper总是建议我使用const string而不是string。

哪个更好:\n

string sQuery = "SELECT * FROM table";

\n还是\n

const string sQuery = "SELECT * FROM table";

\n为什么ReSharper总是建议我这样做呢?

0
0 Comments

问题出现的原因是ReSharper只有在特定的字符串引用永远不会改变的情况下才建议使用const string。在这种情况下,通过使用const string而不是string来表达你的意图。

解决方法就是按照ReSharper的建议,将不会改变的字符串引用声明为const string。这样可以提高代码的可读性和性能。

以下是一个示例代码,说明了这个问题的解决方法:

const string MyConstantString = "This is a constant string";
void SomeMethod()
{
    string myString = MyConstantString; // Correct usage
    myString = "This is a regular string"; // Incorrect usage, ReSharper will suggest making it a const string
    // Rest of the code...
}

在上面的示例中,我们声明了一个名为`MyConstantString`的常量字符串。在`SomeMethod`方法中,我们正确地将`MyConstantString`赋值给一个字符串变量`myString`。这是正确的用法,不会产生ReSharper的建议。

然而,当我们试图将另一个字符串直接赋值给`myString`时,ReSharper会建议将其声明为const string。这是因为我们没有表达出这个字符串引用永远不会改变的意图。

通过按照ReSharper的建议,将字符串引用声明为const string,我们可以清楚地表达出这个意图,增加代码的可读性和性能。

ReSharper建议使用const string而不是string,是为了表达字符串引用永远不会改变的意图。按照ReSharper的建议,将不会改变的字符串引用声明为const string,可以提高代码的可读性和性能。

0
0 Comments

Resharper一直建议我使用const string而不是string,这是为什么呢?

原因是如果字符串永远不会改变,并且永远不会在您的程序集之外使用,则使用const是一个好主意。如果字符串永远不会改变,但会在您的程序集之外使用,则使用static readonly可能是一个更好的选择 - const在调用的位置被"烧入",而不是存储在一个位置,所以重新编译包含const的程序集不会更新依赖的程序集 - 依赖的程序集也必须重新编译。相反,static readonly变量在依赖的程序集中会得到更新。

为什么说在程序集之外使用static readonly是一个更好的选择呢?

使用static readonly可以确保您不会尝试重新分配给它,并且静态变量仍然是变量(与const不同),所以如果您在定义它的程序集中更改字符串,更新将传播到依赖的程序集。而当您改变const时,除非重新编译依赖的程序集,否则不会发生这种情况。

需要注意的是,如果它是一个局部变量而不是字段,这种情况不适用。

所以,根据这些原因,Resharper建议我们在可能的情况下使用const string而不是string。

0
0 Comments

问题的原因是Resharper建议使用const string而不是string的原因是:

- const string会节省内存,因为它不会在每个实例中创建冗余的字符串引用

- const string是不可变的,你不能修改它

解决方法是将string改为const string。

使用const string可以节省内存并且使代码更容易理解。

0