Tech moves fast! Stay ahead of the curve with Techopedia!
Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.
A field, in C#, is a member of a class or an object of any type that represents a memory location for storing a value.
Fields are used to store data that must be accessible to multiple methods of a class and available throughout the lifetime of an object. Fields enable a class or struct to encapsulate the data with options to specify its accessibility at multiple levels.
In general, a field is used for defining a variable in a class with accessibility as private or protected. A field that needs to be exposed anywhere outside of the class can be encapsulated as a public method, property or indexer.
A field is also known as a class-level variable or member variable.
A field has to be declared in a type (class or struct) with its data type and an identifier that names the member. It can also be specified with attributes and modifiers such as new, access modifier (public, private, protected, internal), static, read-only and volatile during its declaration. It may also be assigned an initial value.
A field can be of static or instance type. A static field is not associated with any instance of a type and is shared among all instances of the type. An instance field is associated with an instance of a type such that every instance of a type has its own set of all the instance fields of a class.
For example, the personal details of an Employee class like name, designation, etc. can be stored as instance fields to store the values of each Employee object.
A read-only field can be assigned only during declaration or in an instance or static constructor of that class.
A field differs from a local variable in that the former can be accessed by more than one method and can be used outside the scope of a single method, while the latter is used within the method itself.
A field can be protected by a property that allows reading and writing (after validation) a field. Property also allows for changing the internal implementation of data represented as a field without breaking the existing code.