C#方法参数更新不正确
我有以下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
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";
如果您仍然不完全理解,您可能需要阅读我的。深入了解值类型与引用类型