我是C#的新手......
我正在尝试使用'构造方法'
在表单之间传递对象以下是被调用/被调用类的构造函数:
public frmPeripheralOptions(List<PeriphItem> PeriphSelect)
{
// code...
}
这是调用代码:
frmPeripheralOptions PeriphForm = new frmPeripheralOptions(PeriphSelect);
这些是我在上面一行收到的编译时错误:
C#不允许我将PeriphSelect
作为参数插入构造函数。
错误1最佳重载方法匹配 &#39; BingP3.frmPeripheralOptions.frmPeripheralOptions(System.Collections.Generic.List)&#39; 有一些无效的参数C:\ Users \ scott \ Documents \ Visual Studio 2013 \ Projects \ BingP3 \ BingP3 \ frmComputerOrder.cs 200 47 BingP3
错误2参数1:无法转换 &#39; System.Collections.Generic.List&#39; 至 &#39; System.Collections.Generic.List&#39; C:\用户\斯科特\文档\ Visual Studio 2013 \ Projects \ BingP3 \ BingP3 \ frmComputerOrder.cs 200 72 BingP3
这是列表的定义。它在两个类中都是相同的定义:
public struct PeriphItem
{
public int pos;
public int qty;
public string entry;
}
public System.Collections.Generic.List<PeriphItem> PeriphSelect { get; set; }
列表在调用类的默认构造函数中初始化,如下所示:
PeriphSelect = new List<PeriphItem>();
这里的目标是能够从两个类中访问PeriphSelect
列表的相同迭代。
我已成功将列表传递给当前项目中的构造函数,但它们是标准对象的列表,例如List<Int> and
List`,但不是用户定义对象的列表。
答案 0 :(得分:0)
创建列表时无法推断类型。 这将是代码:
using System.Collections.Generic;
public class frmPeripheralOptions
{
public frmPeripheralOptions(List<PeriphItem> periphSelect)
{
this.PeriphSelect = periphSelect;
}
public List<PeriphItem> PeriphSelect { get; set; }
}
public static Main(string[] args)
{
var periphList = new List<PeriphItem>();
var form = new frmPeripheralOptions(periphList);
}
这应该有效。
答案 1 :(得分:0)
您将任何对象视为相同,无论是系统提供的还是您创建的对象。对象是对象。您想要创建一个List并告诉它将其视为一个列表。例如:
private List<YourClass> myList = new List<YourClass>();
或者,因为你在其他地方初始化它(我不太注意)...
private List<YourClass> myList;
public Constructor()
{
myList = new List<YourClass>();
}
当你把它传递给另一个班级时,你还必须告诉它它里面有什么样的价值,如下:
void Invoker()
{
YourNewClass newClass = new YourNewClass(myList); // the same list you earlier defined.
}
// your new class:
public YourNewClass(List<YourClass> l)
{
// do whatever
}
希望这就是你想要的! :)