ภายในswitchคำสั่งการจับคู่รูปแบบโดยใช้ a caseสำหรับชนิดที่ชัดเจนจะถามว่าค่าที่เป็นปัญหาเป็นประเภทเฉพาะนั้นหรือเป็นประเภทที่ได้รับ มันเทียบเท่ากันแน่นอนของis 
switch (someString) {
  case string s:
}
if (someString is string) 
ค่าnullนี้ไม่มีประเภทดังนั้นจึงไม่เป็นไปตามเงื่อนไขข้างต้น ประเภทคงที่ของsomeStringไม่เข้ามามีบทบาทในตัวอย่างใดตัวอย่างหนึ่ง
varชนิดแม้ว่าจะอยู่ในรูปแบบการจับคู่ทำหน้าที่เป็นป่าการ์ดและจะตรงกับค่าใด ๆ nullรวมทั้ง  
defaultกรณีที่นี่เป็นรหัสที่ตายแล้ว ค่าcase var oนี้จะจับคู่ค่าว่างหรือไม่เป็นค่าว่าง กรณีที่ไม่ใช่ค่าเริ่มต้นจะชนะเหนือค่าเริ่มต้นเสมอดังนั้นdefaultจะไม่ถูกตี หากคุณดู IL คุณจะเห็นว่ามันไม่ได้เปล่งออกมาเลย  
ในภาพรวมอาจดูแปลกที่สิ่งนี้รวบรวมโดยไม่มีการเตือนใด ๆ (ทำให้ฉันผิดหวังอย่างแน่นอน) แต่สิ่งนี้ตรงกับพฤติกรรม C # ที่ย้อนกลับไปที่ 1.0 คอมไพเลอร์อนุญาตdefaultกรณีแม้ว่าจะสามารถพิสูจน์ได้เล็กน้อยว่าจะไม่มีวันโดน พิจารณาเป็นตัวอย่างดังต่อไปนี้:
bool b = ...;
switch (b) {
  case true: ...
  case false: ...
  default: ...
}
ที่นี่defaultจะไม่ถูกตี (แม้ว่าจะboolมีค่าที่ไม่ใช่ 1 หรือ 0) แต่ C # ได้อนุญาตสิ่งนี้ตั้งแต่ 1.0 โดยไม่มีการเตือน การจับคู่รูปแบบจะสอดคล้องกับลักษณะการทำงานนี้ที่นี่
     
              
oเป็นstring(ได้รับการยืนยันกับ generics - คือFoo(o)ที่Foo<T>(T template) => typeof(T).Name) - มันเป็นกรณีที่น่าสนใจมากที่string xจะทำงานที่แตกต่างกว่าvar xแม้ในขณะที่xพิมพ์ (โดยคอมไพเลอร์) เป็นstring