2016-02-03 56 views
3
class Program 
{ 
    public struct course 
    { 
     public string name; 
     public int elecode; 
     public int credit; 


     public static void getdetails() 
     { 
      Console.WriteLine("Enter your Name"); 
      Ele.name = Console.ReadLine(); 

     } 
    } 

    static void Main(string[] args) 
    { 

     course ele; 
     ele.getdetails(); 

    } 
} 
+0

https://msdn.microsoft.com/en-us/library/79b3xss3.aspx – mybirthname

+3

除非你真的瞭解之間的差異C#中的'struct'和'class',通常應該使用'class'。 – crashmstr

+1

我知道,沒有什麼做的問題,但我還是建議你通過命名指南閱讀https://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx – Console

回答

3
  1. 你的方法getdetails不應該是靜態
  2. 刪除Ele.getdetails
  3. 初始化變量course ele

您的代碼:

class Program 
{ 
    public struct course 
    { 
     public string name; 
     public void getdetails() 
     { 
      Console.WriteLine("Enter your Name"); 
      name = Console.ReadLine(); 
     } 
    } 

    static void Main(string[] args) 
    {  
     course ele = new course(); 
     ele.getdetails(); 
    } 
} 

正如由@DavidHeffernan在評論中提及關於設計不良,你必須知道在哪裏使用class,而不是struct是爲了逃避問題,當a value type gives you a COPY of the value

+3

通過方法調用來改變結構是不好的設計 –

+0

謝謝,在答案中提到 – Michael

2

不能調用與實例靜態方法。你有靜態方法,所以用struct調用它,而不是用struct的實例調用它。

course.getdetails(); 

靜態成員是即使已創建無 類的實例類調用。靜態成員總是被 類名訪問,而不是實例名稱

瞭解更多關於靜態這個MSDN文章Static Classes and Static Class Members (C# Programming Guide)上。