为什么标题消息不会显示在控制台中?

时间:2016-02-26 09:55:37

标签: c#

为什么这个方法在这里不起作用?我希望它以这种方式显示标题消息,但为什么不显示它呢?

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*************************************************************************************";
        }
    }
}

5 个答案:

答案 0 :(得分:3)

这里有多个问题:

  • 您在heading方法中设置header_message属性,但您从不调用该方法。因此,setobj.heading对象中login的值永远不会更改,默认为null。
  • 您在setget方法中创建了一个Main对象,并在那里创建了一个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*************************************************************************************";
    }
}

答案 1 :(得分:2)

制作课程abstract class A() { def toJson: JsValue } abstract class AImpl[T <: AImpl[T] : Writes] extends A { this: T => def toJson: JsValue = Json.toJson(this) } case class B(myProperty: String) extends AImpl[B] object B { implicit val bFormat: Format[B] = Json.format[B] } val a: A = B("foo") println(a.toJson) ,您必须致电public然后_login.header_message(),而不必在主

中使用Console.WriteLine(_login.setobj.heading);
setget sgobj = new setget();

答案 2 :(得分:0)

由于通过调用方法header_message()来初始化字符串标题,因此在使用字符串heading之前,您需要调用该方法。 您可以在setget类的构造函数中初始化它。这样,heading将始终初始化并可以使用。

答案 3 :(得分:0)

因为您使用sgobj对象的实例,heading对象为空。

答案 4 :(得分:0)

这是因为你在main中声明了一个setget对象,而在header_message()中声明了一个setget对象;并且只将字符串分配给消息中的字符串。因此,为了这个例子,我返回了方法中设置的对象,并将其分配给主要的那个。

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;
        }
    }