What exactly do you want to do anyway? Do you want to update the property of the object in the list, or do you want another object which is a copy of the object in the list but with a different name?
As an alternative to providing a clone method you could provide a copy constructor.
var newObj = new MyObj(List[2]);
newObj.Name = "fred";
you might be able to do this in a single call, depending on what you want to do. If you know you are always going to create a copy with just a different name then you might want to do something like
var newObj = new MyObj(List[2],"fred");
and set the name during the construction.
but without explicitly creating a new object in some way you can't do what you want.
Be aware though that if you object has a property which is anther object, that you might get into the 'deep copy' problem (which is why IClonable is discouraged) as what do you do when you need to copy that object in you newObj? Do you just provide a reference to the same instance? Or do you copy that as well? What if that object has no clone method/copy constructor, what do you do then?