تفاوت بین static و readonly

static: برای مقادیری استفاده می‌شود که مطمئن هستیم هیچ موقع تغییر پیدا نمی‌کنند. این مقادیر در Compile Time ایجاد می‌شوند و قابل تغییر نیستند. همچنین اگر این نوع مقادیر در assembly دیگری به کار برده شوند باید آن assembly مجدداً ساخته شوند تا مقدار جدید آنها دیده شود.

readonly: برای مقادیری استفاده می‌شود که به ندرت تغییر خواهند کرد و یا نسبت به تغییر آنها شک داریم. این نوع مقادیر در Runtime ایجاد می‌شوند و می‌توان آنها را تنها یکبار در constructorها و یا initializerها مقداردهی کرد. بدون build شدن assembly که از این نوع مقادیر استفاده می‌کند می‌توان به مقادیر جدید آنها دسترسی پیدا کرد