Anonymous Classes and Methods in C#


Anonymous classes and methods in C#, Anonymous, as the name suggests is undesignated or unspecified. It is an interim data type whose properties can only be read but not manipulated.

The scope of the anonymous type is mainly local to the method where it is declared. Points to be noted in the case of anonymous types:

  1. Defined using the keyword new.
  2. They are the only reference type.
  3. The implicitly typed variable var is used to hold an anonymous type.

If two or more anonymous object initializers in an assembly specify a sequence of properties that are in the same order and that have the same names and types, then it will be treated as an instance of the same type by the C# compiler.

Let us take an example:

public class Student
public int StudentRoll { get; set; }
public string StudentName { get; set; }
public int age { get; set; }
class Program
static void Main(string[] args)
lList<Student> studentList = new List<Student>()
new Student(){ StudentRoll = 1, StudentName = "Jai", age = 19},
new Student(){ StudentRoll = 2, StudentName = "Jojo", age = 21},
new Student(){ StudentRoll = 3, StudentName = "Abhil",age = 22},
new Student(){ StudentRoll = 4, StudentName = "Adi",age = 20},
new Student(){ StudentRoll = 5,StudentName = "Shubham",age = 21}};
var studentNames = from s in studentList select new 
StudentRoll = s.StudentRoll, StudentName = s.StudentName };

In the above example, Student class is including various properties. In the Main() method of the above program, Linq select clause is creating an anonymous type that will include only StudentId and StudentName.

Restrictions of Anonymous Classes:

1.Anonymous classes can contain only public fields.

2.Anonymous class’s fields must all be initialized.

3.Anonymous class members are never static.

4.Anonymous class cannot specify any methods.

5.Anonymous cannot implement the interface.

Anonymous methods is an undesignated method which uses the delegate keyword followed by the name of the required method and its body. They can be easily used to assign handlers to events. We can declare the methods without parameters or use parameters to declare them. Let us take an example:

namespace AnonymousMethods
Public class MyClass
public delegate void  MyDelegate(string message);
public event MyDelegate MyEvent;
public void RaiseMyEvent(string msg)
if (MyEvent != null)
class Call
Static void Main(striing[] args)
MyClass myClass1 = new MyClass();
myClass1.MyEvent +=delegate
myClass1.MyEvent += delegate(string message)
console.WriteLine(“your message is: {0}”, message);
Console.WriteLine(“Enter your message”);
string msg = Console.ReadLine();

The above example handles events with the help of anonymous methods.

Useful resource:



Recommended Post   C# Language Fundamentals