Returning an interface to the caller whose implementation you want to hide.
public class Outer
{
private class Inner : IEnumerable
{
/* Presumably this class contains some functionality which Outer needs
* to access, but which shouldn't be visible to callers
*/
}
public IEnumerable GetFoos()
{
return new Inner();
}
}