2016-02-26 67 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方法返回给你什么? –

相关问题