| Home | [web served home-style] | Notes | French | Bibliography | Adult | Forum | About

C# Morphology: keywords, symbols and descriptors

The C# Programming Language, Anders Hejlsberg, et al

What are the functional token words in the C# language—as opposed to the words found in the literature that are merely descriptors of behavior, or pseudo code used to illustrate a point?

If you cannot answer this question with absolute certainty, your study of C# will be difficult indeed.

C# Morphology provides an answer, along with study aids to help you develop a solid understanding of the functional categories of the language's token words. For examples of published errors that cause misunderstanding see: "World's Simplest C# Program." For a good example of information efficiently published see: [ removed ].

Below are two types of listings of C# token words organized in memory jogging categories with a clear distinction made between functional morphemes and descriptors. Use these pages freely, and remember they came from KeyTap®.

Please excuse my included notes. These are works in progress, but you will find them useful.




C# Morphology: functional categories (pdf usually most recent)




Exercise Sheet: for reviewing morphemes found in code snippets
  1. First is a listing of C# keywords according to functional categories. These categories were first abstracted from the Keyword Appendix in Liberty, 2002, then refined through review of the literature. That process is not yet complete.
  2. Second is an exercise sheet, an alphabetical listing of all keywords, for use as a check-off list while reviewing published code snippets to identify and confirm the validity of the categories enunciated. Use it while reading books on the subject of C# to check each word in a code snippet against its listing while asking yourself if the word fits the category description. Mark the first column (mrph=morpheme) if you think the word is a functional morpheme, as opposed to it merely being used in the text to describe C# behavior. An answer sheet is coming soon, but the process of thinking through this problem may be more important than correct answers.

In your study of C#, you will avoid confusion by establishing early which words & symbols are the distinguishing functional elements (the morphemes) of the language.

Surprisingly, published books and online sources generally do not address this basic concept directly and at the outset. Even beginning books may leave this essential understanding vaguely expressed. In fact reading descriptions of keyword usage juxtaposed to the keyword lists proper can lead away from a solid understanding of, "Which of these words are actually part of the language?"

Specifically you will find words used as equivalents such as: 

'class', 'type', and 'datatype'
'integral' and 'intrinsic'
'parameter' and 'argument'

Elsewhere 'class' may be used to mean a specific type/datatype, while the term 'object' may be used in a general sense, but it is also a keyword morpheme. The morpheme 'operator' is also used as a category for the list of keywords.

The words 'implicit', 'explicit', and 'value' may all be used as descriptors as well as being C# morphemes with specific functions within the language. Additionally 'value' is used in numerous contexts while its use as a keyword is an advanced topic not discussed in beginning books.

Subtle differences in the use of 'property', 'attribute' and 'field' may also prove quite confusing.

A person new to the C# language, and especially one new to programming languages in general, will be very disoriented as multiple meanings are applied to a single word, or multiple words are used for the same concept.

There are also numerous standard constructions which, although not keywords, have such stable and precise usage they should be considered morphemes. Such terms as 'System', 'Main' and 'Page_Load' are not C# language keywords, but their use is reserved for specific functions within a very narrow set of circumstances. For example, 'Main' must always be the name of the entry point for C# Console and Windows programs, whereas 'Page_Load' assumes the same function in the scripting of ASP.NET pages.

C# Morphology will help you save time by avoiding such confusion that can arise when precise definition of basic concepts such as the preceding are ignored in instructional texts.

Here's feedback from someone who has found C# Morphology useful:

Your "C# Morphology" is a great tool for organizing and learning C#.

I'm in the process of learning C# OOP. I found myself categorizing the keywords much in the way your work does. After a bit of frustration, a web search on Google (keywords "C# keyword categories") lead me directly to KeyTap.

I just wanted to take a moment to praise your work of ordering and organizing the material for more efficient and effective learning. I expect C# Morphology will become a permanent reference as I develop applications and an improved understanding of C#. Thank you for making it available.

Mark Jones

And my response:

Hi Mark : )

Thank you for taking the time to write and for the kind words about the C# Morphology.

After I posted those pages I came across this book:

Hejlsberg, Anders, Scott Wiltamuth, and Peter Golde.  "The C# Programming Language". Boston: Addison-Wesley, 2004. ISBN: 0-321-15491-6

Basically, the book comes directly from the people who created and developed the C# language.

I am very happy to know my C# Morphology has been useful to somebody else. However, there is a strong possibility that I would not have needed to organize the material myself, if I had found the Hejlsberg book earlier.

An online version of the Hejlsberg book is found at:


My C# Morphology pages are not far removed from a first draft, so if you need something clarified feel free to ask.

Bob Fugett


Liberty, Jesse. Learning C#. Cambridge: O'Reilly, 2002.



this page last updated: 06/13/2013 10:31:08 AM

[ HomeContact ]   

View Mobile