Nope, if you return the reference, it is the reference and the caller can do anything he likes with it.
If you want to restrict access to it's internals, you need to fully encapsulate it, and provide properties and / or methods to expose only those features you want teh caller to access.
And please, specify your access explicitly!
public class MyClass {
private string member1;
private AnotherClass member2;
public string Member1 { get; set;}
public AnotherClass Member2 { get { return member2;}
set { ......do some controls....
member2 = .... }
}