我有一组不同类型的字段,我必须将它们分组到任何数据结构中。然后我必须将它传递给函数并使用索引修改数据结构的字段,如数组。 我该怎么做?谢谢大家。
mytype{
int a;
ushort b;
string c;
}
我想传递这个对所有这些字段进行分组的数据结构,它可以是类或结构。并将此传递给函数,并希望使用索引修改该实例的字段,如下所示:
void function(ref mytype G)
{
G[1] = 1; <= Here G.a should be set to 1
}
答案 0 :(得分:3)
您可以使用对象列表:
var list = new List<object>();
list.Add("strings are cool!");
list.Add(42);
// ...
var objByIndex = list[1]; // 42
如果你这样做,你将失去C#强类型的所有优点。我建议使用一个定义良好的强类型属性的类,除非你真的需要通用的东西(你之前对属性的类型一无所知)。
答案 1 :(得分:2)
要通过引用将参数传递给方法,可以使用ref
关键字。所以你可以这样做:
void Method1(Class1 obj1, Class2 obj2, ref Class3 obj3)
{
obj3 = new Class3();
// set the fields of obj3 based on values of obj1 and obj2
}
Method1(obj1, obj2, ref obj3);
对于“使用索引修改数据结构的字段,如数组”,如果需要,可以将这些索引作为附加参数传递。我不得不更多地了解你在做什么来回答这个问题。
请注意,在上面的示例中,通过引用传递obj3的唯一原因是因为该方法正在创建对象的实例。如果已经创建了对象,则不需要按引用传递。
答案 2 :(得分:0)
修改对象非常简单,只要您没有跨越某些边界(进程,机器,网络(机器的变体))。您可以使用ref关键字传入,但在大多数情况下不需要。
但这实际上取决于数据结构的含义。您是在谈论您创建的实际对象还是数据集中的数据行,您在EF中创建了什么?
概念是一样的。如果你越过边界,你最好“重置”你的对象而不是尝试通过引用传递。
就您的意思提供一些指导,我可以跟进更具体的信息。