如何将值从一个子类传递到主类C#中的另一个子类?
我创建了一个名为MyMainClass如何将值从一个子类传递到主类C#中的另一个子类?
namespace MyTest
{
private void frmMain_Load(object sender, EventArgs e)
{
MyMainClass myVar = new MyMainClass();
myVar.sub1.sb1A = "value 1A";
myVar.sub1.sb1B = "value 1B";
MessageBox.Show(myVar.sub2.wantPassString);
//I want to print the value "I've got value value 1A"
}
public class MyMainClass
{
public subClass1 sub1 = new subClass1();
public subClass2 sub2 = new subClass2();
public class subClass1
{
public string sb1A{get;set;}
public string sb1B{get;set;}
}
public class subClass2
{
public string sb2A{get;set;}
public string sb2B{get;set;}
// a1a is a value that I want to get from subClass1
string a1a = subClass1.sb1A;
public string wantPassString {get{return "I've got value " + a1a;}}
}
}
}
类如何传递的值从subClass1.sb1A字符串A1A或wantPassString在subClass2?当我打电话frmMain_Load
正常的方法是通过传递类构造函数。这个作品:
public class MyMainClass
{
public MyMainClass()
{
sub1 = new subClass1();
sub2 = new subClass2(sub1);
}
public subClass1 sub1;
public subClass2 sub2;
public class subClass1
{
public string sb1A{get;set;}
public string sb1B{get;set;}
}
public class subClass2
{
public subClass2(subClass1 sub1)
{
this.sub1 = sub1;
}
public string sb2A{get;set;}
public string sb2B{get;set;}
subClass1 sub1;
public string wantPassString {get{return "I've got value " + sub1.sb1A;}}
}
}
我尝试你的方法,但运行时它将null传递给a1a –
@MonySnap - 是的,对不起。我更改了代码。它现在应该工作。 – Enigmativity
非常感谢你,这真的很有用。 –
一种选择是创建方法,而不是像财产
public string wantPassString(string param)
{
return "I've got value " + param;
}
和frmMain_Load调用此方法
MessageBox.Show(myVar.sub2.wantPassString(a1a));
我用你的方法从subclass1获取值,但我希望它完成subClass2中的代码。当我在frmLoad中使用时,我想调用myVar.sub2.wantPassString –
创建第三个类来保存数据。
public MainClass
{
private class sharedClass
{
internal string sb1A { get; set; }
}
public class subClass1
{
private readonly sharedClass _shared;
internal subClass1(sharedClass shared)
{
this._shared = shared;
}
public string sb1A
{
get
{
return this._shared.sb1A;
}
set
{
this._shared.sb1A = value;
}
public string sb1B{get;set;}
}
public class subClass2
{
private readonly sharedClass _shared;
public subClass2(shared s)
{
_shared = s;
}
public string sb2A{get;set;}
public string sb2B{get;set;}
public string wantPassString {get{return "I've got value " + _shared.sb1;}}
}
private readonly sharedClass _shared = new sharedClass();
private readonly subClass1 _subClass1;
private readonly subClass2 _subClass2;
public MainClass()
{
this._subClass1 = new subClass1(this._shared);
this._subClass2 = new subClass2(this._shared);
}
}
谢谢我会试试你的。 –
代码中出现错误,代码中出现错误。 –
您可以添加额外的属性和方法,并将其作为参数传递:
public string sb2C{ get; set; }
public string getData(string strParam)
{
return sb2C= strParam;
}
然后在您的frmMain_Load:
MessageBox.Show(myVar.sub2.getData(myVar.sub1.sb1B));
//This would also populate sb2C that will hold the data from the other class
我想在subClass2中完成代码,所以当我在frmMain_Load中调用myVar.sub2.wantPassString时,我可以获得我想要的值。 –
你知道'subClass1'和'subClass2'不是子类吗? – Enigmativity
那么,我应该怎么称呼我的应用程序中的subClass1和subClass2,我认为MyMainClass将覆盖那些2,所以我称之为子类。否则,谢谢。 –
一个子类是当你有'class A {}'&'class B时:一个{}' - 在这种情况下,类'B'是'A'的子类。在你的情况下,他们只是对象,如果你愿意,你可以称它们为'X'和'Y',只是不会让人感到困惑。 – Enigmativity