Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#方法参数更新不正确_C#_.net - Fatal编程技术网

C#方法参数更新不正确

C#方法参数更新不正确,c#,.net,C#,.net,我有以下C#简单代码: public class Error { public string ErrorDescription { get; set; } public string ErrorCode { get; set; } } public class Request { public Error RequestError { get; set; } } public class Response { public Error ResponseErro

我有以下C#简单代码:

public class Error
{
    public string ErrorDescription { get; set; }
    public string ErrorCode { get; set; }
}

public class Request
{
    public Error RequestError { get; set; }
}

public class Response
{
    public Error ResponseError { get; set; }
}

public Response Process(Request request)
    {
        var r = new Response
        {
            ResponseError = request.RequestError
        };

        r.ResponseError.ErrorDescription = "New Response Description";

        return r;
    }
我通过具有以下功能的控制台应用程序调用流程:

var request = new Request
{
    RequestError = new Error()
    {
        ErrorCode = "Request Error Code",
        ErrorDescription = "Request Error Description"
    }
};

var service = new Service();
var response = service.Process(request);
Debug.WriteLine("request ErrorDescription = " + request.RequestError.ErrorDescription);
为什么request.ResponseError.ErrorDescription等于“新响应描述”;我没有更新请求对象,它也没有被out/ref调用。我只更新我返回的响应对象

我做错了什么


谢谢

这是问题的开始:

ResponseError = request.RequestError;
您有一个
错误
对象-在该行之后,您的响应和请求都指向同一个对象。请记住,
Error
是一个类,因此
Request.RequestError
Response.ResponseError
的值都是引用

然后在此处修改对象:

r.ResponseError.ErrorDescription = "New Response Description";

如果您仍然不完全理解,您可能需要阅读我的。

深入了解值类型与引用类型