方案: 我有一个Web表单,我现在为Item类输入输入我想为具有返回类型列表的功能分配值我该怎么做。
item value = new item(),
value.feature = serialtextbox.text; //error
foreach ( var item in value) //error
{
item.SerialNo= serialtextbox.text;
}
项目和项目要素类
Class Item
{
list<Itemfeature> features;
}
class ItemFeature
{
public int SerialNo
{
get { return serialno; }
set { serialno = value; }
}
public int Weight
{
get { return weight; }
set { weight = value; }
}
}
Plz帮帮我
答案 0 :(得分:5)
注意:没有指定语言,但它看起来像C#。我在这个答案中假设C#。
你在这里尝试做什么并不是很清楚,但我会试一试。首先,您将要发布您正在使用的实际代码。这段代码甚至不会编译,它加载了语法错误。
让我们先看一下你的对象:
class Item
{
List<ItemFeature> features;
}
class ItemFeature
{
public int SerialNo
{
get { return serialno; }
set { serialno = value; }
}
public int Weight
{
get { return weight; }
set { weight = value; }
}
}
您有一个自定义类ItemFeature
,它由序列号(整数)和权重(整数)组成。然后,您有另一个自定义类Item
,其中包含ItemFeature
的列表。
现在看起来您正在尝试向ItemFeature
添加新的Item
,然后遍历所有这些并再次设置它们?也许是这样的事情?:
Item value = new Item();
value.features.Add(new ItemFeature { SerialNo = int.Parse(serialtextbox.Text) } );
foreach (var item in value.features)
{
item.SerialNo = int.Parse(serialtextbox.Text);
}
(请注意,此代码可能与您的代码一样随心所欲,所以我没有测试它或任何东西。)
我在这里改变的是:
Item
对象本身。 Item
对象包含列表作为属性,但对象本身不是列表。您可以遍历该属性,而不是通过父对象。要问一些事项/注意:
Item
班级有一个公共变量features
。这通常是不赞成的。最好使用一个属性。这样,如果您必须在其后面添加逻辑,则不会破坏对象本身之外的兼容性。 ItemFeature
类具有这样的属性,这很好。如果您愿意,可以使用automatic properties进一步缩短它们,只是为了保持简洁。serialtextbox.Text
值进行任何输入检查。它应该是。我以简单的形式介绍了它,作为在理想条件下工作的介绍性方法。但是像下面这样的东西会更好:的
var serialValue = 0;
if (!int.TryParse(serialtextbox.Text, out serialValue))
{
// Here you would probably present an error to the user stating that the form field failed validation.
// Maybe even throw an exception? Depends on how you handle errors.
// Mainly, exit the logic flow.
return;
}
var value = new Item();
value.features.Add(new ItemFeature { SerialNo = serialValue } );
修改:我刚刚注意到我对.Add()
的调用实际上会失败。在尝试使用它之前,您需要初始化列表。考虑将Item
类更改为以下内容:
class Item
{
public List<ItemFeature> features { get; set; }
public Item()
{
features = new List<ItemFeature>();
}
}
这里改变了两件事:
null
。因此,对.Add()
或列表中任何其他方法的任何调用都会抛出NullReferenceException
,因为没有对象可以调用方法。