C# 如何使用C中的Task为对象的属性赋值#
我有一个模型类,每个属性都映射了一个模型类 考虑模型类“C# 如何使用C中的Task为对象的属性赋值#,c#,reference,task-parallel-library,multitasking,ref,C#,Reference,Task Parallel Library,Multitasking,Ref,我有一个模型类,每个属性都映射了一个模型类 考虑模型类“联系人”” 与任务相关的C#代码为 请帮助我如何有效地使用任务而没有任何编译时错误 在这里,我附上了截图 只需声明一个相同类型的局部变量Contact,并将此局部变量传递给该任务即可 C#代码: public void映射联系人(参考联系人信息) { List taskList=新列表(); Contact pro=contactInfo; taskList.Add(Task.Factory.StartNew(()=> {pro.profi
联系人”
”
与任务相关的C#代码为
请帮助我如何有效地使用任务而没有任何编译时错误
在这里,我附上了截图
只需声明一个相同类型的局部变量Contact,并将此局部变量传递给该任务即可 C#代码:
public void映射联系人(参考联系人信息)
{
List taskList=新列表();
Contact pro=contactInfo;
taskList.Add(Task.Factory.StartNew(()=>
{pro.profileInfo=新配置文件()
{
FirstName=“Stack”,
LastName=“溢出”
};
}));
Task.WaitAll(taskList.ToArray());
}
LinqPad输出为
@lukegv-错误与客户端签名无关。GetProfileInfo问题中的代码不会产生所述错误,请发布。您可以从方法签名中删除ref,类始终是引用parameters@MaksimSimkin-我需要
ref
关键字来保留原始引用,请帮助我如何克服这种情况下的问题,请不要建议避免使用ref
@HenkHolterman-感谢您的关注。我想你没有意识到这一点,有人会回答这个问题。。再次感谢。@HenkHolterman-我们在这里只给出我们的极限解决方案或建议。如果我们试图影响提问者,这不是一个健康的讨论。因为没有人应该发布实际的代码,所以我们大多数人都用示例代码描述了实际的场景。我们不知道ref
的实际目的,因此在这种情况下,不要试图打破问卷要求,如果你这样做了,就没有人应该站出来发布问题。这是我谦虚的请求……当ref
不必要时,就不需要你的回答了。当它是必要的时候,你的答案就不够了。@HenkHolterman-愚蠢的指导方针。首先,仔细阅读指南。指南是为我们设计的,只是为了简化讨论,而不是为了自杀。如果有人问这个问题,他们会发帖寻求解决方案,但像你这样的人认为我们是上级,我们就是这样的管理员。这是新来者唯一的问题。首先改变态度。@HenkHolterman-他期待的是ref
,我的答案中缺少什么因素。只需指出或张贴您的答案。
public class Contact
{
public Profile profileInfo { get; set; }
public bool isActive { get; set; }
}
public class Profile
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public void MapContact(ref Contact contactInfo)
{
List<Task> taskList = new List<Task>();
taskList.Add(Task.Factory.StartNew(() =>
{
contactInfo.profileInfo = client.GetProfileInfo(1);
}));
Task.WaitAll(taskList.ToArray());
}
contactInfo.profileInfo = client.GetProfileInfo(1);
public void MapContact(ref Contact contactInfo)
{
List<Task> taskList = new List<Task>();
Contact pro = contactInfo;
taskList.Add(Task.Factory.StartNew(() =>
{ pro.profileInfo = new Profile()
{
FirstName = "Stack",
LastName = "Overflow"
};
}));
Task.WaitAll(taskList.ToArray());
}