2012-03-02 10 views

उत्तर

14

सी # में सबसे नज़दीक आप Type प्रकार प्राप्त कर सकते हैं, जिसमें एक प्रकार के बारे में मेटाडेटा होता है।

public class A { } 
public static int Main(string[] args) 
{ 
    Type b = typeof(A); 
} 

यह बिल्कुल ही नहीं है। डेल्फी में, "अन्य प्रकार का प्रकार" स्वयं एक प्रकार है जिसे आप एक चर को असाइन कर सकते हैं। सी # "अन्य प्रकार के प्रकार" में System.Type उदाहरण है जिसे System.Type प्रकार के किसी भी चर के लिए असाइन किया जा सकता है।

उदाहरण के लिए, डेल्फी में, आप यह कर सकते हैं:

type 
    TAClass = class of TA; 
    TA = class 
    public 
    class procedure DoSomething; 
    end; 

var x : TAClass; 
begin 
    x := TA; 
    x.DoSomething(); 
end; 

आप सी # में इस तरह कुछ भी नहीं कर सकते हैं; आप Type के उदाहरणों से टाइप ए के स्थिर तरीकों को कॉल नहीं कर सकते हैं जो typeof(A) धारण करने के लिए होते हैं, और न ही आप एक वेरिएबल को परिभाषित कर सकते हैं जो केवलtypeof(A) या व्युत्पन्न प्रकारों को पकड़ सकता है।

public class A { } 
public class ListOfA<T> where T: A { } 

इस मामले में, टी "एक के प्रकार के" है या एक के लिए जो भी व्युत्पन्न वर्ग के लिए इस्तेमाल किया गया था:

(कुछ विशिष्ट पैटर्न कि डेल्फी metaclass प्रकार के लिए उपयोग किया जाता है, जेनरिक का उपयोग कर पूरा किया जा सकता कक्षा का निर्माण।)

+10

वास्तव में अच्छी भाषा सुविधाओं में से एक डेल्फी के पास सी # नहीं है। –

संबंधित मुद्दे