RouteValues ​​vs QueryString MVC?

Quais são as diferenças entre QueryString em Request e RouteData.Values ?
Podemos usá-los em vez disso?

RouteValues ​​são reunidos a partir da querystring somente se forem definidos em global.asax, por exemplo:

 routes.MapRoute( "Example", // Route name "{controller}/{action}/{id}/{inRouteValues}", // URL with parameters new { controller = "Home", action = "Index" } // Parameter defaults ); 

irá capturar inRouteValues ​​de yourdomain/testController/testAction/14/myTestValue onde RouteData.Values["inRouteValues"] será uma string com o valor “myTestValue”.
Mas se você criar um URL como yourdomain/testController/testAction/14?inRouteValues=myTestValue ele não conseguirá. Portanto, a diferença é que RouteData.Values obterá apenas valores de URLs que correspondam a RouteCollection de seu global.asax e QueryString capturarão todos os valores de sua RouteCollection de RouteCollection se corresponder ao nome da variável.