Reading a book about C# I noticed that sometimes is mentioned value type and sometimes primitive type for some data type (e.g. int, double). I thought they were the same thing, but they are really the same or not? 

What is the difference between a value type and a primitive type? 
Are they the same thing? 

**EDIT**

The question is not only related to C# programming Language, I was wondering how them are different even in any other language.