C#にはいくつかの組み込みの参照型があります。主な参照型には以下のものがあります。
クラスはC#で定義されたユーザー定義の参照型です。新しいオブジェクトを作成するために使用され、フィールド、プロパティ、メソッドなどのメンバーを持つことができます。インスタンス化する際には new キーワードが使用されます。
 
public class MyClass {
  // クラスの定義
}
MyClass myObject = new MyClass(); // クラスのインスタンス化
インターフェースは、メソッド、プロパティ、イベントなどのメンバーの署名を提供する参照型です。クラスは1つ以上のインターフェースを実装することができます。
 
public interface IMyInterface {
  void MyMethod();
}
public class MyClass: IMyInterface {
  public void MyMethod() {
    // メソッドの実装
  }
}
配列は同じ型の要素が連続したメモリ領域に格納された参照型です。配列はインデックスによってアクセスされ、固定サイズのデータセットを扱うのに使用されます。
 
int[] numbers = new int[5]; // 整数型の配列の宣言と初期化
文字列はC#でのテキストデータを表す参照型です。文字列はイミュータブル（変更不能）であり、一度作成された後は変更することができません。
 
string myString = "Hello, World!"; // 文字列の定義
他にも delegate（デリゲート）、object（すべての型の基底型）、dynamic（実行時の型チェックを避けるための動的型）、record（不変なデータ構造の定義に特化した特別なクラス）、カスタムの参照型（構造体、タプルなど）など、様々な参照型があります。これらはC#言語で異なる役割を果たし、異なる目的で使用されます。