का उपयोग कर WriteLine प्रदर्शन जब मैं कोड के इस बिट चलाने के लिए, Equation(10, 20)
कंसोल के लिए उत्पादन होता है एक if
तो मैं Boolean
लिए अंतर्निहित रूपांतरण के लिए अनुमति दी:समर्थन रूपांतरण, लेकिन अभी भी ToString
public class Equation
{
public int a;
public int b;
public override string ToString()
{ return "Equation(" + a + ", " + b + ")"; }
public static implicit operator Boolean(Equation eq)
{ return eq.a == eq.b; }
}
class Program
{
static void Main(string[] args)
{
if (new Equation() { a = 10, b = 10 })
Console.WriteLine("equal");
Console.WriteLine(new Equation() { a = 10, b = 20 });
Console.ReadLine();
}
}
हालांकि, मुसीबत जब मैं एक Equation
पर WriteLine
उपयोग करते हैं, यह टी परिवर्तित मिलता है, अब ToString
का उपयोग करके मुद्रण के बजाय Boolean
।
मैं Boolean
पर निहित रूपांतरण की अनुमति कैसे दे सकता हूं और अभी भी ToString
का उपयोग कर WriteLine
डिस्प्ले है?
अद्यतन
यह सवाल SymbolicC++ में Equation
वर्ग से प्रेरित है। नीचे दिए गए कोड को दिखाता है कि एक Equation
cout
के माध्यम से प्रदर्शित किया जा सकता है और साथ ही एक if
की कसौटी में इस्तेमाल किया:
auto eq = x == y;
cout << eq << endl;
if (eq)
cout << "equal" << endl;
else
cout << "not equal" << endl;
तो यह किसी भी तरह सी में संभव है ++।
वाह, आपने इसे माइक को दबाया। धन्यवाद! – dharmatech
जबकि आपके द्वारा सूचीबद्ध बयानों में 'समीकरण' कार्य करते समय, ऐसा लगता है कि वे ऑपरेटरों '||' और '&&' के साथ काम नहीं करते हैं। बस सोचा कि मैं इस विकल्प पर विचार कर रहे लोगों के लिए इसका जिक्र करूँगा। – dharmatech
@ धर्माटेक जैसा कि मैंने कहा था कि यह अब 'बूलियन' में परिवर्तनीय नहीं है। आप '&' और '| 'ऑपरेटरों को भी अधिभारित कर सकते हैं, लेकिन यह सीमित उपयोग होगा क्योंकि आप अभी भी' eq && true 'जैसी कुछ नहीं कर पाएंगे। मैं वास्तव में जॉन की टिप्पणी से सहमत हूं कि इस तरह की चीज थोड़ा बहुत चालाक है और आपके कोड और भविष्य के रखरखाव दोनों उपभोक्ताओं के लिए भ्रमित होने की संभावना है। –