这是一个非常初学的问题,但我很难过,我无法弄清楚如何从中得到我想要的东西。我有我的第一个类获取信息(数据库/文本文件/无论如何),但我希望它将该信息转发到Class2。
例如,第一个:
public class Class1
{
private int first;
private string firstString;
private bool isTrue;
public void SomeMethod()
{
first = 1;
firstString = "FirstString";
isTrue = true;
}
}
此处SomeMethod
设置我需要传递给Class2的所有属性。
ClassTwo看起来像
public class Class2
{
private int first;
private string FirstString;
private bool isTrue;
private int second;
private string SecondString;
private bool isFalse;
public void SomeOtherMethod()
{
}
}
这里我想要的是SomeOtherMethod()
使用在Class1的SomeMethod()
中设置的值设置第一组属性。这样我就可以创建Class2
类型的对象并添加我想要的对象。
答案 0 :(得分:3)
正如其他一些评论员所说,你真的应该重用你的数据定义。这样的事情可以让你开始:
public class Class1
{
private int _myInt;
private string _myString;
private bool _myBool;
public void SomeMethod()
{
_myInt = 1;
_myString = "FirstString";
_myBool = true;
}
}
public Class2
{
private Class1 _first = new Class1();
private Class1 _second = new Class1();
public void SetFirst(Class1 obj)
{
_first = obj;
}
}
然后使用这样的类:
Class1 c1 = new Class1();
Class2 c2 = new Class2();
c1.SomeMethod();
c2.SetFirst(c1);
答案 1 :(得分:0)
您必须为Class1的属性定义get accessors,因为它们都无法从类外部访问,而Class2需要使用它们的值。使用get访问器定义公共属性非常有用:
private int first;
public int First
{
get
{
return first;
}
}
让Class1中的每个属性都像这样定义,您可以访问这些值。在调用SomeMethod之后,可以通过两种简单的方式对两个对象的属性进行均衡(另请参阅:Signatures and overloading):
public void SomeOtherMethod()
{
Class1 tempClass = new Class1();
tempClass.SomeMethod();
this.first = tempClass.first;
this.FirstString = tempClass.firstString;
this.isTrue = tempClass.isTrue;
}
public void SomeOtherMethod(Class1 myClass) // Overloaded method
{
this.first = myClass.first;
this.FirstString = myClass.firstString;
this.isTrue = myClass.isTrue;
}
即使上面的技术看起来像你要求的,最好的方法是使用constructors初始化类的属性。这样,每次创建Class1对象时都不必调用SomeMethod,也可以在创建新对象时设置其默认值。此外,为属性提供更多通用名称将使您免于重复。我编写了一些代码,为您提供可理解的语法,以防止将来出现无法访问和重复的问题。
public class Class1
{
private int number;
public int Number
{
get { return number; }
}
private string name;
public string Name
{
get { return name; }
}
private bool isTrue;
public bool IsTrue
{
get { return isTrue; }
}
public Class1()
{
number = 1;
name = "FirstString";
isTrue = true;
}
public Class1(int value1, string value2, bool value3)
{
number = value1;
name = value2;
isTrue = value3;
}
}
public class Class2
{
private Class1 firstClass;
private Class1 secondClass;
public Class2()
{
firstClass = new Class1();
secondClass = new Class1(2, "SecondString", false);
}
}
如果要在Class2中定义许多Class1对象,则必须使用数组或列表等解决方案。我举一个简短的例子,见MSDN List page。
private List<Class1> class1List = new List<Class1>();
class1List.Add(new Class1());
class1List.Add(new Class1(2, "SecondString", false));