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());
}