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方法外,一切都正常,有什么建议吗?

C#有没有一种方法可以像构造函数一样使用方法

如果您的类型有一个状态,最好在使用它之前创建一个此类的实例。只需从方法中删除静态关键字,然后使用以下代码:

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的公共静态列表添加到您的类中。这应该将该项添加到类中的新静态列表中,并返回该列表。目前还不清楚,因为问题中有两个类名,而且代码中似乎存在一些类型问题。