为什么这个方法在这里不起作用?我希望它以这种方式显示标题消息,但为什么不显示它呢?
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*************************************************************************************";
}
}
}
答案 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;
}
}