考虑一下班级考试
步骤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方法中的行为。请再次阅读问题
答案 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)
正如您已经发现的那样,string
和String
之间没有实现差异,因为string
只是.NET类System.String
的别名。这意味着它是一个C#语言关键字。
使用string
作为语言关键字使其看起来像C#内置类型(在VisualStudio中将像其他C#关键字一样着色)。
事实上,虽然作为一个类对象,但字符串有点特殊,因为编译器使用值语义进行comarision以使其更直观。
关于您的代码:第二种情况与第一种情况具有相同的错误。也许在您的真实代码中,您有一个名为temp的本地或全局变量,它会影响您的memeber变量,因此它不会产生错误。