डेल्फी में मैं इतनाजो सी # घोषणा डेल्फी "वर्ग की श्रेणी" (कक्षा का प्रकार) के बराबर है?
type
TFooClass = class of TFoo;
TFoo=class
end;
कौन इस घोषणा के लिए सी बराबर # है की तरह वर्ग के प्रकार घोषणा कर सकते हैं?
डेल्फी में मैं इतनाजो सी # घोषणा डेल्फी "वर्ग की श्रेणी" (कक्षा का प्रकार) के बराबर है?
type
TFooClass = class of TFoo;
TFoo=class
end;
कौन इस घोषणा के लिए सी बराबर # है की तरह वर्ग के प्रकार घोषणा कर सकते हैं?
सी # में सबसे नज़दीक आप 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 प्रकार के लिए उपयोग किया जाता है, जेनरिक का उपयोग कर पूरा किया जा सकता कक्षा का निर्माण।)
वास्तव में अच्छी भाषा सुविधाओं में से एक डेल्फी के पास सी # नहीं है। –