कृपया बताएं कि C is
और as
कीवर्ड में क्या अंतर है #
कृपया बताएं कि C is
और as
कीवर्ड में क्या अंतर है #
जवाबों:
is
ऑपरेटर चेकों एक वस्तु एक विशेष प्रकार के लिए डाली जा सकता है।
उदाहरण:
if (someObject is StringBuilder) ...
as
ऑपरेटर प्रयास एक विशिष्ट प्रकार के लिए एक वस्तु कास्ट करने के लिए, और रिटर्न शून्य अगर यह विफल रहता है।
उदाहरण:
StringBuilder b = someObject as StringBuilder;
if (b != null) ...
यह भी संबंधित:
डाली ऑपरेटर प्रयास एक विशिष्ट प्रकार के लिए एक वस्तु डाली, और एक अपवाद फेंकता है अगर यह विफल करने के लिए।
उदाहरण:
StringBuilder b = (StringBuilder)someObject.
is
यह जाँच नहीं करता है कि कोई वस्तु किसी विशिष्ट प्रकार से डाली जा सकती है या नहीं। एक पूर्णांक एक लंबे समय तक ठीक रहता है, लेकिन 10 is long
गलत है।
(long)some_integer
असफल हो जाएगा? मुझे पूरा यकीन है कि हम दोनों जानते हैं कि इसे चलाने के बिना भी सच नहीं है, इसलिए कृपया समझाएं कि आपका क्या मतलब है।
is
: " ध्यान दें कि है । ऑपरेटर केवल संदर्भ के रूपांतरण, मुक्केबाजी रूपांतरण, और unboxing रूपांतरण इस तरह के उपयोगकर्ता परिभाषित रूपांतरण के रूप में अन्य रूपांतरण, समझता है, माना जाता है। " (Msdn.microsoft.com/en-us/library/scekt9xw .aspx)। के बारे मेंas
: " ध्यान दें कि जैसा कि ऑपरेटर केवल संदर्भ रूपांतरण, अशक्त रूपांतरण और बॉक्सिंग रूपांतरण करता है। ऑपरेटर के रूप में अन्य रूपांतरण, जैसे उपयोगकर्ता-परिभाषित रूपांतरण नहीं कर सकते हैं, जो कि कास्ट एक्सप्रेशन का उपयोग करके किया जाना चाहिए। " ( msdn) .microsoft.com / en-us / Library / cscsdfbt.aspx )
IS और As के बीच अंतर यह है कि ।।
IS - क्या संचालक का उपयोग किसी दिए गए प्रकार के साथ किसी वस्तु की अनुकूलता की जांच करने के लिए किया जाता है और यह बूलियन (ट्रू या गलत) के रूप में परिणाम देता है।
AS - जैसा कि ऑपरेटर का उपयोग किसी दिए गए प्रकार या वर्ग के ऑब्जेक्ट की कास्टिंग के लिए किया जाता है।
पूर्व।
Student s = obj as Student;
के बराबर है:
Student s = obj is Student ? (Student)obj : (Student)null;
is
के साथ व्यक्त किया जा सकता है as
और के साथ व्यक्त किया as
जा सकता है is
। यहाँ कीवर्ड के is
साथ कैसे बना जाए as
। Bool b = obj is Student;
समतुल्य है: Bool b = (obj as Student) != null;
इस पर अधिक यहाँ
दोनों is
और as
कीवर्ड्स C # टाइप करने के लिए उपयोग किए जाते हैं।
जब आप दोनों कीवर्ड्स के आईएल कोड पर एक नज़र डालेंगे, तो आपको अंतर आसानी से मिल जाएगा।
C # कोड:
BaseClass baseclassInstance = new DerivedClass();
DerivedClass derivedclassInstance;
if (baseclassInstance is DerivedClass)
{
derivedclassInstance = (DerivedClass)baseclassInstance;
// do something on derivedclassInstance
}
derivedclassInstance = baseclassInstance as DerivedClass;
if (derivedclassInstance != null)
{
// do something on derivedclassInstance
}
आईएल कोड (ऊपर C # कोड के लिए संलग्न चित्र में है):
is
कीवर्ड उपयोग
के लिए IL कोड में IL निर्देश isinsta
और दोनों शामिल हैं castclass
।
लेकिन as
कीवर्ड उपयोग के लिए IL कोड केवल है isinsta
।
उपर्युक्त उपयोग में, दो टाइपकास्ट होगा जहां is
कीवर्ड का उपयोग किया जाता है और केवल एक टाइपकास्ट जहां as
कीवर्ड का उपयोग किया जाता है।
नोट: यदि आप is
किसी शर्त को जांचने के लिए कीवर्ड का उपयोग कर रहे हैं और टाइपकास्ट के परिणाम में कोई दिलचस्पी नहीं है, तो केवल एक ही क्रेडिटकास्ट होगा, अर्थात
if (baseclassInstance is DerivedClass)
{
// do something based on the condition check.
}
is
और as
कीवर्ड का उपयोग आवश्यकता के आधार पर किया जाएगा।
क्या कीवर्ड यह जाँचता है कि क्या उसके बाईं ओर का मूल्य दाईं ओर के प्रकार का एक उदाहरण है। उदाहरण के लिए:
if(obj is string)
{
...
}
ध्यान दें कि इस स्थिति में आपको स्ट्रिंग के रूप में obj प्राप्त करने के लिए एक अतिरिक्त स्पष्ट कलाकारों का उपयोग करना होगा।
कीवर्ड का उपयोग अशक्त प्रकारों को डालने के लिए किया जाता है। यदि निर्दिष्ट मान निर्दिष्ट प्रकार का उदाहरण नहीं है, तो नल वापस आ गया है। उदाहरण के लिए:
string str = obj as string;
if(str != null)
{
...
}
मैं कहूँगा: MSDN ऑनलाइन पढ़ें, लेकिन यहाँ यह है:
ऑपरेटर यह जाँचता है कि क्या वस्तु किसी दिए गए प्रकार के साथ संगत है या नहीं, और मूल्यांकन का परिणाम एक बूलियन है: सही या गलत।
ऑपरेटर के रूप में एक अपवाद कभी नहीं फेंकेगा।
ऑपरेटर, एक कास्ट है, अगर यह सफल होता है तो वापस लौटता है। यदि कलाकार असफल हो जाता है तो यह गलत हो जाता है। इसके साथ, आप परिवर्तित चर पर कब्जा नहीं कर सकते। यह ऑपरेटर सबसे उपयोगी होता है जब प्रकारों की जाँच करता है अगर-कथनों और अभिव्यक्तियों में। यह केवल कास्ट आदर्श है यदि परिणामी चर का उपयोग करने की आवश्यकता नहीं होगी
जैसा कि एक कास्ट है। इसके साथ, हम प्रदर्शन हासिल करते हैं और अपवादों से बचते हैं जब एक डाली अमान्य होती है। डाली असंभव होने पर नल वापस कर दिया जाता है। संदर्भ प्रकारों के लिए, एस-कास्ट की सिफारिश की जाती है। यह तेज़ और सुरक्षित दोनों है। हम परिणामी चर को नल के खिलाफ परीक्षण कर सकते हैं और फिर इसका उपयोग कर सकते हैं। यह अतिरिक्त जातियों को समाप्त करता है
है OPERATOR , C # में ऑपरेटर का उपयोग ऑब्जेक्ट प्रकार की जांच करने के लिए किया जाता है और यह एक बूल मान लौटाता है: यदि ऑब्जेक्ट एक ही प्रकार और सही है तो सही है। या यह भी कि "रन" ऑपरेटर का उपयोग यह जांचने के लिए किया जाता है कि किसी प्रकार का रन-टाइम किसी दिए गए प्रकार के अनुरूप है या नहीं। अशक्त वस्तुओं के लिए, यह गलत उदाहरण देता है
if(obj is AnimalObject)
{
//Then Work
}
ऑपरेटर के रूप में
जैसा कि ऑपरेटर ऑपरेटर का एक ही काम करता है, लेकिन अंतर बूल के बजाय होता है, यह वस्तु को वापस लौटाता है यदि वे उस प्रकार के अनुकूल हैं, अन्यथा यह अशक्त हो जाता है। अन्य पासवर्ड में, 'as' संचालक का उपयोग संगत के बीच रूपांतरण करने के लिए किया जाता है प्रकार के।
जैसे
Type obj = Object as Type;
ऑपरेटर के प्रकार के मामले में, ओवर टाइप करने के फायदे हैं , हमें दो चरण करने की आवश्यकता है:
Check the Type using is
If it’s true then Type cast
वास्तव में यह प्रदर्शन को प्रभावित करता है क्योंकि प्रत्येक और हर बार सीएलआर वंशानुक्रम पदानुक्रम के माध्यम से जाएगा, प्रत्येक आधार प्रकार को निर्दिष्ट प्रकार के खिलाफ जांचना।
इससे बचने के लिए, इसका उपयोग करें, यह इसे एक चरण में करेगा। केवल उस प्रकार की जाँच के लिए जिसे हमें ऑपरेटर का उपयोग करना चाहिए।
is
: ऑपरेटर का उपयोग यह जांचने के लिए किया जाता है कि किसी प्रकार का रन-टाइम किसी दिए गए प्रकार के साथ संगत है या नहीं
as
: संगत प्रकार के बीच रूपांतरण करने के लिए ऑपरेटर का उपयोग किया जाता है।
object s = "this is a test";
string str=string.Empty;
if( s is string)
str = s as string;
is
तब ऐसा करना महंगा होता है as
: यह दो बार अनबॉक्स हो जाता है। संदर्भ प्रकारों के लिए, आपको बस करना चाहिए as
, फिर यह देखने के लिए कि यह काम किया है या नहीं।
नीचे दिए गए यूट्यूब वीडियो पर एक नज़र डालें जो अधिक प्रदर्शनकारी और दृश्य तरीके में अंतर को बताता है: -
https://www.youtube.com/watch?v=IKmRtJcRX_I
नीचे कोड स्पष्टीकरण के साथ लंबा उत्तर दिया गया है।
"IS" कीवर्ड यह जांचने के लिए उपयोगी है कि क्या ऑब्जेक्ट एक प्रकार के साथ संगत हैं। उदाहरण के लिए नीचे दिए गए कोड में अगर हम जाँच रहे हैं कि "ओस्ट" ऑब्जेक्ट एक प्रकार का "ग्राहक" वर्ग है।
object ocust = new Customer();
if (ocust is Customer)
{
"AS" कीवर्ड एक प्रकार से दूसरे प्रकार में रूपांतरण करने में मदद करता है। उदाहरण के लिए नीचे दिए गए कोड में हम ऑब्जेक्ट को एक स्ट्रिंग डेटा प्रकार में परिवर्तित कर रहे हैं। यदि "AS" कीवर्ड टाइप करने में सक्षम नहीं है, तो यह NULL लौटाता है।
object o = "somestring";
string str = o as string;
IS Keyword -> यह जांचता है कि किसी दिए गए ऑब्जेक्ट का प्रकार नए ऑब्जेक्ट प्रकार के साथ संगत है या नहीं। यह कभी भी एक अपवाद नहीं है। यह एक बूलियन प्रकार है। या तो सच है या गलत है
`student stud = new student(){}
if(stud is student){} // It returns true // let say boys as derived class
if(stud is boys){}// It returns false since stud is not boys type
//this returns true when,
student stud = new boys() // this return true for both if conditions.`
AS Keyword: यह जांचता है कि किसी दिए गए ऑब्जेक्ट का प्रकार नए ऑब्जेक्ट प्रकार के साथ संगत है या नहीं। यह नॉन-नल लौटाता है यदि दी गई वस्तु नए के साथ संगत है, अन्यथा शून्य .. यह एक अपवाद फेंकता है।
`student stud = new student(){}
// let say boys as derived class
boys boy = stud as boys;//this returns null since we cant convert stud type from base class to derived class
student stud = new boys()
boys boy = stud as boys;// this returns not null since the obj is pointing to derived class`
दोनों ऑपरेटर सुरक्षित प्रकार की कास्टिंग के लिए उपयोग किए जाते हैं।
ऑपरेटर के रूप में:
एएस ऑपरेटर यह भी जाँचता है कि किसी दिए गए ऑब्जेक्ट का प्रकार नए ऑब्जेक्ट प्रकार के साथ संगत है या नहीं। यह कीवर्ड यह जाँच करेगा कि किसी दिए गए ऑब्जेक्ट का प्रकार नए ऑब्जेक्ट प्रकार के साथ संगत है या नहीं। यदि यह नए के साथ संगत नहीं है तो यह NULL को लौटा देगा।
संचालक:
यह ऑपरेटर जाँचता है कि क्या वस्तु का प्रकार नई वस्तु के साथ संगत है या नहीं। यदि यह संगत है तो यह सच है अन्यथा गलत है।