Stack implementation using a growing array
Your code looks very good, except for one bug in the constructor:

public Stack(int capacity)


You should really do a bounds check on capacity. It should not be allowed to be negative, of course.
But also, if capacity is zero, you will get an exception when you call Push. It will try to resize to count * 2, which is zero.

_values.Length &lt;&lt; 1


Code should be clear. If you mean to multiply by 2, say * 2, not &lt;&lt; 1

I would really implement a GetEnumerator() method, so you can iterate over the Stack items, even if you're not going to implement any collection interface. Implementing IEnumerable&lt;T&gt; is handy if you want to use LINQ.