C#有没有一种方法可以像构造函数一样使用方法
本文关键字:构造函数 一样 使用方法 方法 有没有 一种 | 更新日期: 2023-09-27 18:13:49
我是一个新手,所以如果这是一个愚蠢的问题,我很抱歉。我已经将我的接口绑定到我构建的类的字段。我把类初始化为类型为T的List,现在我正试图将字段的赋值增加到列表的索引中。
我的代码看起来像这样。我的班级:
class MyClass
{
public string ID { get; set; } // I want these to increment
public string MyVar { get; set; }
public MyClass()
{
this.ID = "";
this.MyVar = "";
}
public MyClass (string id, string myvar)
{
this.ID = id;
this.MyVar = myvar
}
public static List<MyClass> Query(string datasource)
{
XElement data = XElement.Load(datasource);
List<MyQuiz> query = (from d in data.Descendants("Object")
select new MyQuiz((string)d.Element("ID"),
(string)d.Element("MyVar")
)).ToList();
return query;
}
public static List<MyClass> Assign (List<MyClass> assign, int i)
{
i++
//Can't do this because it's static, need another way!
this.ID = assign[i].ID;
this.MyVar = assign[i].MyVar;
}
起始代码
int i = 0;
List<MyClass> myClass = new List<MyClass>();
myClass = MyClass.Query("data.xml");
MyClass.Assign(myClass, i);
和xml
<root>
<Object>
<ID>1</ID>
<MyVar>TESTING</MyVar>
</Object>
<root>
除了Assign方法外,一切都正常,有什么建议吗?
如果您的类型有一个状态,最好在使用它之前创建一个此类的实例。只需从方法中删除静态关键字,然后使用以下代码:
List<MyClass> myClass = new List<MyClass>();
MyClass myClassInstance = new MyClass();
myClass = myClassInstance.Query("data.xml");
myClassInstance.Assign(myClass, i);
看起来你正试图做这样的事情:
public static List<MyClass> Assign (MyClass target, List<MyClass> assign, int i)
{
i++;
target.ID = assign[i].ID;
target.MyVar = assign[i].MyVar;
}
它将用List<MyClass>
的第i个实例中的值替换MyClass
的第一个例子中的值
但这有点难说,因为你在这里想要实现什么并不明显。看起来没有任何理由不使用新参数重新实例化对象。
我想您想初始化Id:
public static List<MyClass> Assign (List<MyClass> assign, int i)
{
for(int j=0;j<assign.Count;j++){
assign[j].ID = i;
i++
}
}
public static List<MyClass> myClassList = new List<MyClass>();
public static List<MyClass> Assign (List<MyQuiz> assign, int i)
{
myClassList.Add(new MyClass(assign[i].ID, assign[i].MyVar));
return myClassList;
}
根据你的问题,这就是你想要的。创建MyClass的新实例,将其添加到列表中,并根据i.分配字段值
编辑:将MyClass的公共静态列表添加到您的类中。这应该将该项添加到类中的新静态列表中,并返回该列表。目前还不清楚,因为问题中有两个类名,而且代码中似乎存在一些类型问题。