Q:

This functionality is unavailable for field collections not associated with a list

I have the code below and up the fld. Update() line, it crashes saying 

This functionality is unavailable for field collections not associated
  with a list

The string values I provided are fine. 
             SPContentType ctype = list. ContentTypes["x"];
                    SPField fld = ctype. Fields. GetField("x");

                    if (! list. Fields. ContainsField("x"))
                    {

                        list. Fields. Add(fld);
                    }

                    fld. ShowInDisplayForm = true;
                    fld. ShowInEditForm = true;
                    fld. ShowInNewForm = true;
                    fld. Update();

                    ctype. Update();

How should this code be written? 
EDIT: What I am trying to do is add a field from a content type (All the doc libs use the content type), display that field in the document library's view form (recursively, so within folders etc), and then copy text from one field to another. 

A:

gss,
I'm extremely interested in understanding what you think you are doing here, but I'll answer your question first: Content types have field links, not fields, so try working with the field links collection instead. 
.b
EDIT: Based on your refined question, what you want to do is something along the lines of (pseudo-code):
foreach (SPView view in list. Views) 
{
  view. ViewFields. Add(fieldname);
}
You do not need to add the field to the list if the content type is already attached to the list.  
.b

