无法访问Main()中C#中的属性

时间:2016-07-22 05:13:54

标签: c# visual-studio

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中键入上述代码时,它总是显示错误。主方法中的SSN无法访问?为什么这样?属性是否在同一类中不可访问?我尝试使用 this.SSN ,但没有结果。救命! 我是编程新手。谢谢!

5 个答案:

答案 0 :(得分:1)

如果将其设置为静态,也可以从Main方法访问SSN的值。你也有字符串格式错误的引号 - 字符串是第一个参数,引号应该在逗号和变量名之前结束。

试试这个:

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

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

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分:0)

您的代码中存在两个问题。

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

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

    因此请指定关键字static

    public static string SSN { get; set; }

答案 3 :(得分:-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);
            }
       }  
    }

以下代码背后的解释是您需要在访问任何属性和/或方法之前实例化 Program 类,因为它未被声明为静态。

答案 4 :(得分:-1)

必须是静态的

public static string SSN { get; set; }

或类

中的新实例
classname c1 = new classname();
c1.SSN;