Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 局部函数字符串变量或外部全局变量:哪个更有效?_C#_String - Fatal编程技术网

C# 局部函数字符串变量或外部全局变量:哪个更有效?

C# 局部函数字符串变量或外部全局变量:哪个更有效?,c#,string,C#,String,我有一个很长的c#windows窗体,我需要在许多地方使用相同的字符串。我应该定义它还是在局部函数中使用字符串 e、 g 在全局外部函数中,我应该定义以下内容: static myUrl_A = "abc.com"; static myUrl B = "xyz.com"; 或者我应该只使用一个内部字符串?还有其他建议吗?如果是同一个文本字符串,则无所谓。它们通常是内部的,这基本上意味着编译器会记住它看到的文本,同一个文本的所有出现都是对内存中单个字符串对象的引用。不过,在某个地方声明它们可能仍

我有一个很长的c#windows窗体,我需要在许多地方使用相同的字符串。我应该定义它还是在局部函数中使用字符串

e、 g

在全局外部函数中,我应该定义以下内容:

static myUrl_A = "abc.com";
static myUrl B = "xyz.com";

或者我应该只使用一个内部字符串?还有其他建议吗?

如果是同一个文本字符串,则无所谓。它们通常是内部的,这基本上意味着编译器会记住它看到的文本,同一个文本的所有出现都是对内存中单个字符串对象的引用。不过,在某个地方声明它们可能仍然有意义,以避免代码中出现“神奇的数字”。

如果是同一个文本字符串,则无所谓。它们通常是内部的,这基本上意味着编译器会记住它看到的文本,同一个文本的所有出现都是对内存中单个字符串对象的引用。不过,在某个地方声明它们可能还是有意义的,以避免代码中出现“幻数”。

使作用域尽可能小–这使您的程序逻辑更易于推理(仅存在于小作用域中的变量只能影响该作用域,并且受该作用域的影响)


声明多个局部变量而不是几个全局变量实际上不会影响性能。例外情况是,当您的函数被期望非常深入地递归时。但即使这样,一些局部变量声明的开销通常也可以忽略。

使作用域尽可能小–这使您的程序逻辑更容易推理(仅存在于小作用域中的变量只能影响该作用域,并且受该作用域的影响)


声明多个局部变量而不是几个全局变量实际上不会影响性能。例外情况是,当您的函数被期望非常深入地递归时。但是,即使这样,一些局部变量声明的开销通常也可以忽略。

正如@millimoose所提到的,性能影响几乎没有意义,尽管通过内部调用共享字符串的时间有限制

更重要的是,如果字符串实际上只有一个值,那么应该在单个位置将该字符串表示为常量。这样做有两个好处:

  • 您不会在两个不同的位置(如打字错误)意外地为同一字符串提供不同的值
  • 如果您确实在指定的一个位置键入,则只需在该位置更改,而不需要在复制的20个文件中更改
    正如@millimoose所提到的,性能影响几乎是没有意义的,尽管通过interning共享字符串的时间有限制

    更重要的是,如果字符串实际上只有一个值,那么应该在单个位置将该字符串表示为常量。这样做有两个好处:

  • 您不会在两个不同的位置(如打字错误)意外地为同一字符串提供不同的值
  • 如果您确实在指定的一个位置键入,则只需在该位置更改,而不需要在复制的20个文件中更改
    我认为由于大量使用,全局性更好,但是如果许多函数或线程调用相同的全局变量,is应该不会有问题,对吗?它甚至不应该是全局的-如果您将其声明为私有的,那么其他类将无法看到它。虽然它应该是
    静态的
    。我认为global更好,因为它有很多用途,但是如果许多函数或线程调用同一个全局变量,is应该不会有问题,对吧?它甚至不应该是全局的-如果你声明它
    私有的
    ,那么其他类就看不到它了。它应该是
    静态的
    。注意:在这种情况下使用
    常量
    只读
    。注意:在这种情况下使用
    常量
    只读