2016-02-26 108 views
-4

爲什麼此方法不適用於此?我希望它以這種方式顯示標題消息,但它爲什麼不顯示它?爲什麼控制檯中不顯示標題消息?

using System; 

namespace rd 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      setget sgobj = new setget(); 
      login _login = new login(); 
      Console.WriteLine(sgobj.heading); 
      Console.ReadKey(); 
     } 
    } 

    class setget 
    { 
     public string heading 
     { set; get; } 
    } 

    class login 
    { 
     setget setobj = new setget(); 
     public void header_message() 
     { 
      setobj.heading= "*************************************************************************************"+ 
       "\n*************************************************************************************"+ 
       "\n*************************        *******************************"+ 
       "\n************************* Welcome to Radeon Limited.. *******************************"+ 
       "\n*************************        *******************************"+ 
       "\n*************************************************************************************"+ 
       "\n*************************************************************************************"; 
     } 
    } 
} 
+2

調用_login.header_message()打印消息 –

回答

2

使類public,你必須調用_login.header_message()然後Console.WriteLine(_login.setobj.heading);和你沒有使用setget sgobj = new setget();

namespace rd 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      login _login = new login(); 
      _login.header_message(); 
      Console.WriteLine(_login.setobj.heading); 
      Console.ReadKey(); 
     } 
    } 

    public class setget 
    { 
     public string heading 
     { set; get; } 
    } 

    public class login 
    { 
     public setget setobj = new setget(); 
     public void header_message() 
     { 
      setobj.heading= "*************************************************************************************"+ 
       "\n*************************************************************************************"+ 
       "\n*************************        *******************************"+ 
       "\n************************* Welcome to Radeon Limited.. *******************************"+ 
       "\n*************************        *******************************"+ 
       "\n*************************************************************************************"+ 
       "\n*************************************************************************************"; 
     } 
    } 
    } 
+0

爲OP沒有訪問'_login'裏面的'setget'對象是不夠之前(它是私有的)。 – poke

+0

你是對的@poke –

3

您有多個問題在這裏:

  • 您可以設置heading方法中的header_message方法,但您永遠不會調用該方法。因此login對象內setobj.heading的值不會更改,默認情況下爲null。
  • 你在你的Main方法創建一個setget對象,你還可以創建一個login對象出現,但login對象都有自己setget對象,所以即使你改變了值,也不會影響您創建的setget對象。值不鏈接。

你應該做的是這樣的:

class Program 
{ 
    static void Main(string[] args) 
    { 
     SetGet sgobj = new SetGet(); 

     // pass your SetGet object to the login constructor 
     Login login = new Login(sgobj); 

     // call the method to set the login message 
     login.header_message(); 

     // print the login message 
     Console.WriteLine(sgobj.Heading); 
     Console.ReadKey(); 
    } 
} 

class SetGet 
{ 
    public string Heading 
    { set; get; } 
} 

class Login 
{ 
    private SetGet setobj; 

    // accept a SetGet object and store it in the login instance 
    public Login (SetGet setobj) 
    { 
     this.setobj = setobj; 
    } 

    public void header_message() 
    { 
     setobj.Heading= "*************************************************************************************"+ 
      "\n*************************************************************************************"+ 
      "\n*************************        *******************************"+ 
      "\n************************* Welcome to Radeon Limited.. *******************************"+ 
      "\n*************************        *******************************"+ 
      "\n*************************************************************************************"+ 
      "\n*************************************************************************************"; 
    } 
} 
0

由於串標題是通過調用方法header_message()初始化,您將需要調用該方法,使用字符串heading之前。 您可以在setget類的構造函數中初始化它。這樣,heading將始終被初始化並可以使用。

0

因爲您使用sgobj實例對象具有heading對象爲空。

0

這是因爲你在main中聲明瞭一個setget對象,而在header_message()中聲明瞭一個對象。並只將該字符串分配給消息中的字符串。所以爲了這個例子,我返回了在方法中設置的對象,並將它分配給你的主對象。

static void Main(string[] args) 
    { 
     setget sgobj = new setget(); 
     login _login = new login(); 
     sgobj = _login.header_message(); 
     Console.WriteLine(sgobj.heading); 
     Console.ReadKey(); 
    } 

    class setget 
    { 
     public string heading 
     { set; get; } 
    } 

    class login 
    { 
     setget setobj = new setget(); 
     public setget header_message() 
     { 
      setobj.heading = "*************************************************************************************" + 
       "\n*************************************************************************************" + 
       "\n*************************        *******************************" + 
       "\n************************* Welcome to Radeon Limited.. *******************************" + 
       "\n*************************        *******************************" + 
       "\n*************************************************************************************" + 
       "\n*************************************************************************************"; 

      return setobj; 
     } 
    } 
+0

它仍然無法正常工作? – user5898542

+0

這是我的確切代碼,它將字符串輸出到控制檯,header_message方法返回給你什麼? –

相關問題