Counting nodes in a circular doubly linked list is very useful while working on it. It requires creating a temp node pointing to the head of the list and a variable called i with initial value 0. If the temp node is not null, increase i by 1 and move to the next node using temp next. Repeat the process till the temp node reaches the head. The final value of i will be the total number of nodes in the circular doubly linked list.

The function countNodes is created for this purpose. It is a 4-step process.

```public int countNodes() {

//1. create a temp node pointing to head
Node temp = new Node();

//2. create a variable to count nodes
int i = 0;

//3. if the temp node is not null increase
//   i by 1 and move to the next node, repeat
//   the process till the temp becomes null
if (temp != null) {
i++;
temp = temp.next;
}
i++;
temp = temp.next;
}

//4. return the count
return i;
}
```

The below is a complete program that uses above discussed concept of counting the total number of nodes of a circular doubly linked list.

```using System;

//node structure
class Node {
public int data;
public Node next;
public Node prev;
};

}

//Add new element at the end of the list
public void push_back(int newElement) {
Node newNode = new Node();
newNode.data = newElement;
newNode.next = null;
newNode.prev = null;
} else {
Node temp = new Node();
temp = temp.next;
temp.next = newNode;
newNode.prev = temp;
}
}

//count nodes in the list
public int countNodes() {
Node temp = new Node();
int i = 0;
if (temp != null) {
i++;
temp = temp.next;
}
i++;
temp = temp.next;
}
return i;
}

//display the content of the list
public void PrintList() {
Node temp = new Node();
if(temp != null) {
Console.Write("The list contains: ");
while(true) {
Console.Write(temp.data + " ");
temp = temp.next;
break;
}
Console.WriteLine();
} else {
Console.WriteLine("The list is empty.");
}
}
};

// test the code
class Implementation {
static void Main(string[] args) {

//Add four elements in the list.
MyList.push_back(10);
MyList.push_back(20);
MyList.push_back(30);
MyList.push_back(40);

//Display the content of the list.
MyList.PrintList();

//number of nodes in the list
Console.WriteLine("No. of nodes: "+ MyList.countNodes());
}
}
```

The above code will give the following output:

```The list contains: 10 20 30 40
No. of nodes: 4
```

5