在静态方法中使用字符串变量和字符串变量

本文关键字:字符串 变量 静态方法 | 更新日期: 2023-09-27 18:22:05

考虑,类测试

步骤1->

  public class test
    {
    private string temp_err=string.Empty;
    public static void GetResult()
    {
     temp_err="abc";  
    }
    }

步骤2->

 public class test
        {
        private String temp=string.Empty;
        public static void GetResult()
        {
         temp="abc";  
        }
        }

在步骤1的情况下,将出现错误:无法访问静态上下文中的非静态字段

但当我像第2步那样更改代码时,一切都很好。

请解释stringstring之间的区别。。

在谷歌上,有人写道字符串是系统的别名。字符串描述没有这样的区别。

请大家在选择这个可能重复的问题之前。阅读该网址上给出的全部41个答案,然后做出一些决定。我在问静态方法中的行为。请再次阅读问题

在静态方法中使用字符串变量和字符串变量

您必须使字段static能够在static方法中访问,您不能将非静态字段传递给静态方法:

private static string temp_err=string.Empty;
private static String temp=string.Empty;

字符串和string之间没有区别,但在调用字符串类的静态方法的情况下,使用类名string(如string.Format.)可能会被认为是更好的风格

正如您已经发现的,stringString之间没有实现差异,因为string只是.NET类System.String的别名。这意味着它是一个C#语言关键字。

使用string作为语言关键字使其看起来像C#内置类型(在VisualStudio中,is将像其他C#关键字一样着色)。事实上,尽管字符串是一个类对象,但它有一些特殊之处,因为编译器使用值语义进行组合,使其更直观。

关于您的代码:第二种情况与第一种情况有相同的错误。也许在你的真实代码中,你有一个本地或全局变量,也被命名为temp,它会隐藏你的memeber变量,因此它不会产生错误。