यदि कोई इकाई अपरिवर्तनीय होने जा रही है, तो यह सवाल कि क्या एक संरचना या एक वर्ग का उपयोग करना आमतौर पर शब्दार्थ के बजाय प्रदर्शन में से एक होगा। 32/64-बिट सिस्टम पर, क्लास के संदर्भ में जानकारी की मात्रा की परवाह किए बिना, क्लास संदर्भों को स्टोर करने के लिए 4/8 बाइट्स की आवश्यकता होती है; क्लास रेफरेंस कॉपी करने के लिए 4/8 बाइट्स कॉपी करने होंगे। दूसरी ओर, हर अलगवर्ग उदाहरण के पास 8/16 बाइट्स होगी, इसके अतिरिक्त जानकारी और इसके संदर्भ की मेमोरी लागत। मान लीजिए कि 500 संस्थाओं में से प्रत्येक को चार 32-बिट पूर्णांक रखने वाले एक सरणी चाहिए। यदि इकाई एक संरचना प्रकार है, तो सरणी को 8,000 बाइट्स की आवश्यकता होगी, भले ही सभी 500 इकाइयां सभी समान हों, सभी अलग हों, या कहीं बीच हों। यदि इकाई एक वर्ग प्रकार है, तो 500 संदर्भों की सरणी में 4,000 बाइट्स होंगे। यदि वे सभी संदर्भ अलग-अलग वस्तुओं को इंगित करते हैं, तो वस्तुओं को एक अतिरिक्त 24 बाइट्स की आवश्यकता होगी (सभी 500 के लिए 12,000 बाइट्स), कुल 16,000 बाइट्स - एक संरचनात्मक प्रकार की भंडारण लागत का दोगुना। दूसरी ओर, कोड ने एक ऑब्जेक्ट इंस्टेंस बनाया और फिर सभी 500 ऐरे स्लॉट्स के संदर्भ को कॉपी किया, कुल लागत उस उदाहरण और 4 के लिए 24 बाइट्स होगी; सरणी के लिए 000 - कुल 4,024 बाइट्स। एक बड़ी बचत। कुछ स्थितियों के साथ-साथ अंतिम एक भी काम करेगा, लेकिन कुछ मामलों में इस तरह के साझाकरण को सार्थक बनाने के लिए पर्याप्त सरणी स्लॉट्स के लिए कुछ संदर्भों को कॉपी करना संभव हो सकता है।
यदि इकाई को परिवर्तनशील माना जाता है, तो कक्षा या संरचना का उपयोग करने का प्रश्न कुछ तरीकों से आसान है। मान लें कि "थिंग" या तो एक संरचना या वर्ग है जिसमें एक पूर्णांक फ़ील्ड है जिसे x कहा जाता है, और एक निम्नलिखित कोड करता है:
बात t1, t2;
...
t2 = t1;
t2.x = 5;
क्या कोई t1.x को प्रभावित करने के लिए बाद वाला बयान चाहता है?
यदि थिंग एक वर्ग प्रकार है, तो t1 और t2 समतुल्य होगा, जिसका अर्थ t1.x और t2.x भी समतुल्य होगा। इस प्रकार, दूसरा कथन t1.x को प्रभावित करेगा। यदि थिंग एक संरचना प्रकार है, तो t1 और t2 अलग-अलग उदाहरण होंगे, जिसका अर्थ t1.x और t2.x अलग-अलग पूर्णांकों को संदर्भित करेगा। इस प्रकार, दूसरा कथन t1.x को प्रभावित नहीं करेगा।
म्यूटेबल स्ट्रक्चर्स और म्यूटेबल क्लासेस में फंडामेंटल डिफरेंट बिहेवियर होते हैं, हालांकि .net में म्यूट स्ट्रक्चर म्यूटेशन से निपटने में कुछ क्वर्क होते हैं। यदि कोई मान-प्रकार का व्यवहार चाहता है (जिसका अर्थ है कि "t2 = t1" t1 और t2 को अलग-अलग उदाहरणों के रूप में छोड़ते हुए डेटा को t1 से t2 तक कॉपी करेगा), और यदि कोई .net में मूल्य प्रकारों की हैंडलिंग के साथ quirks के साथ रह सकता है, तो उपयोग करें। संरचना। यदि कोई मूल्य-प्रकार के शब्दार्थ चाहता है, लेकिन .net के प्रश्न एक आवेदन में टूटे हुए मूल्य-प्रकार के शब्दार्थ को जन्म देगा, तो कक्षा का उपयोग करें।