Depends on how you "pass Company class to CompanyDetails method".
Because you have declared a constructor with a parameter, the system no longer generates a parameterless constructor for you automatically.
So if you try to create a new instance of your Company class without passing it a string it looks for a parameterless version and reports an error.
There are a couple of ways round this:
1) If the name is compulsory, then leave it as it is, and provide a new when you create the new instance.
2) Convert your string to an optional parameter:
public CompanyName(string name = "Anonymous")
{
this._name = name;
}
3) Write a parameterless constructor that sets a default string value.