C#에서는 pointer라는 형식이 없는 까닭에 참조와 관련된 몇 가지 규칙을 정하고 있다. 가장 기본이 되는 구분이 value type과 reference type이다.
value types: int, float 등의 기본 자료형(Java에서는 이것들을 primitive type이라고 부른다.)과 struct type이 이에 속한다.
reference types: value type을 제외한 나머지 모든 것들. new 키워드를 사용하여 생성하는 객체를 담는 모든 자료형은 다 여기에 속한다. Java의 object type과 유사하다고 보면 된다.
string type은 value type이 아니라 immutable reference type이다.
C#에서는 parameter를 전달할 때 기본적으로 값에 의한 전달(pass by value) 방식을 사용한다. 물론 참조에 의한 전달(pass by reference) 방식이 있으며, 몇 가지 특이한 형식의 parameter 전달 방식이 더 있다.
value parameters
reference parameters
output parameters
parameter arrays