2016-07-22 15 views
-4
class Program 
{ 
    public string SSN { get; set; } 

    // Return a hash code based on a point of unique string data. 
    public override int GetHashCode() 
    { 
     return SSN.GetHashCode(); 
    } 

    public static void Main(string[] args) 
    { 
     Console.WriteLine("{0},SSN"); 
    } 
} 

当我在Visual Studio中键入上面的代码时,它总是显示一个错误。 Main Method中的SSN不可访问?为什么这样?财产不能在同一班级内访问吗?我尝试使用this.SSN,但没有结果。帮帮我! 我是编程新手。谢谢!无法访问Main()中的C#中的属性

+0

因为SSN也不是一成不变的 – harishr

+0

嗯,是的,它是一个*实例*属性,'Main'是*静态*方法。你认为你正在访问SSN的哪个“Program”实例? –

+0

不可否认,你提供的代码*会*编译,并带有一个合适的'using'指令 - 我假设你想写'Console.WriteLine(“{0}”,SSN);'? –

回答

0

您的代码有两个问题。一,SSN必须static如果你打算使用它在Main方法。二,Console.WriteLine("{0},SSN")应该是Console.WriteLine("{0}", SSN)

namespace ConsoleApplication6 
{ 
    class Program 
    { 
     public static string SSN { get; set; } 

     // Return a hash code based on a point of unique string data. 
     public override int GetHashCode() 
     { 
      return SSN.GetHashCode(); 
     } 

     public static void Main(string[] args) 
     { 
      Console.WriteLine("{0}", SSN); 
     } 
    } 
} 
+0

为什么它“必须”成为?如果在主要方法中,您创建了一个程序的初始化实例,它也可以工作。取决于阿布舍克想要做什么。 – derloopkat

+0

是的,但是如果阿布舍克不想创建一个实例,那么它必须是“静态”的。 – 2016-07-22 05:43:00

-1

尝试:

namespace ConsoleApplication6 
    { 
     class Program 
     { 
      public string SSN { get; set; } 

      // Return a hash code based on a point of unique string data. 
      public override int GetHashCode() 
      { 
       return SSN.GetHashCode(); 
      } 

      public static void Main(string[] args) 
      { 
       Program p = new Program(); 
       Console.WriteLine("{0}",p.SSN); 
      } 
     } 
    } 

下面的代码背后的解释是,你需要访问任何财产和/或方法,因为它未声明为static之前来实例计划类。

-1

必须是静态的

public static string SSN { get; set; } 

或新的实例从

classname c1 = new classname(); 
c1.SSN; 
1

类也可以从主方法访问SSN的值,如果你把它是静态的。您也有字符串格式化错误的引号 - 字符串是第一个参数,并且引号应该在逗号和变量名称之前结束。

试试这个:

public class Program 
{ 
    public static string SSN { get; set; } 

    public static void Main(string[] args) 
    { 
     SSN = "212"; 
     Console.WriteLine("{0}", SSN); 
    } 
} 
0

你的代码有两个问题。

  1. Console.Writeline您指定的字符串格式错误的语法。 Console.WriteLine("{0}",SSN); 要传入格式的字符串应该在字符串引号之外,并以逗号开头。

  2. public string SSN { get; set; }您无法访问静态方法内的非静态变量。

    所以指定关键字static

    public static string SSN { get; set; }