Usually, Entities and ValueObjects are mutually exclusive concepts for a given case. Different domains also care differently about different concepts and one such concept might be a ValueObject in a given Domain and an Entity in another given Domain.
One such example is Money as a concept. For an E-Commerce context, Money is probably a ValueObject since the domain will care only about its Value and not its persistent Identity (for such system, 2 instances of 10 USD will be the same and you will not care about naming them apart).
For the Federal Bank (or whatever is the Entity that prints Money) treats Money in a totally different fashion. This Domain actually labels individual bills with serial numbers and care a great lot about the history of every single bill (when was it printed, which was the model, probably also where was it printed). As such, this domain will probably model Money as an Entity.
These differences will also affect how equality is handled.
For a ValueObject, equality is usually defined on "2 instances having the same value" so, you're probably better matching every value field in order to establish equality. The Money instance "10 USD" is equal to the other Money instance "10 USD", but its different to the Money instance "10 EUR" (their FaceValue property is the same, but their Currency is not so you can't use them interchangeably).
Now, for an Entity, you care about the identity of a given instance for its whole lifetime (as a concept, not as an instantiation). So, if you have a Money instance with Serial Number 1234 and properties "10 / USD / NearMint" and it becomes damaged, it changes and keeps its Serial Number 1234, but its properties are updated to "10 / USD / Stained". Its still the very same bill and for all accounts it should respond to equality comparers as true.
Just to finish this long answer, the "setter" part is also domain dependent. Usually, ValueObjects shouldn't change their internal states. But Entities should only change their internal states based on the domain rules. In the money example, probably makes absolutely no sense to be able to chance the FaceValue or Currency of a given bill even when its an entity. How ever, its state NearMint -> Stained -> Damaged -> etc probably can evolve over time. Also, you should probably consider not using always straight setters and instead create domain meaningful methods in your entities to better express the ubiquitous language when handling state transitions.