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

时间:2014-09-17 08:03:43

标签: c# .net string

考虑一下班级考试

步骤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步一样,一切正常。

请解释字符串字符串之间有什么区别..

在谷歌上,写的是字符串是System.String的别名,它描述了没有这种差异。

在选择此问题之前请大家重复一下。阅读该网址上给出的所有41个答案,然后做出一些决定。我在询问Static方法中的行为。请再次阅读问题

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

使用string作为语言关键字使其看起来像C#内置类型(在VisualStudio中将像其他C#关键字一样着色)。 事实上,虽然作为一个类对象,但字符串有点特殊,因为编译器使用值语义进行comarision以使其更直观。

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