2014-07-09 2 views
6

पैसे के लिए मैं एक कस्टम मूल्य प्रकार का उपयोग कर रहा हूं जिसमें केवल एक decimal फ़ील्ड है। सरलीकृत कोड इस प्रकार है।क्या मैं अपने कस्टम मूल्य प्रकार में प्रत्यय निर्दिष्ट कर सकता हूं?

public struct Money 
{ 
    private decimal _value; 

    private Money(decimal money) 
    { 
     _value = Math.Round(money, 2, MidpointRounding.AwayFromZero); 
    } 

    public static implicit operator Money(decimal money) 
    { 
     return new Money(money); 
    } 

    public static explicit operator decimal(Money money) 
    { 
     return money._value; 
    } 
} 

मेरी परियोजना में इस संरचना का उपयोग करते समय कभी-कभी अस्पष्टता उत्पन्न होती है। और कभी-कभी मैं object को निरंतर संख्या के साथ सेट कर रहा हूं जिसे Money माना जाता है। अब मैं की तरह, वस्तु आरंभ कर रहा हूँ के लिए

object myObject=(Money)200; 

मैं अपने कस्टम प्रकार Money के लिए एक प्रत्यय प्रदान कर सकता हूँ। मैं ऑब्जेक्ट को निम्न के साथ प्रारंभ करना चाहता हूं।

object myObject=200p; 
+4

नहीं, यह संभव नहीं सी # में है। हालांकि आप ऐसा करने के लिए एक प्रीप्रोसेसर लिख सकते हैं। – leppie

+0

आप नहीं कर सकते। बीटीडब्ल्यू क्या मतलब है? पाउंड? –

+1

हो सकता है कि आप स्वयं को स्ट्रिंग पैरामीटर के साथ एक कन्स्ट्रक्टर या निहित ऑपरेटर लिख सकें और इसे मैन्युअल रूप से पार्स कर सकें। – Tarec

उत्तर

7

आप सी # के साथ कस्टम प्रत्यय निर्दिष्ट नहीं कर सकते हैं। निकटतम बात आप कर सकते हैं पूर्णांकों के लिए विस्तार विधि पैदा कर रही है:

public static Money Para(this int value) // you can do same for decimals 
{ 
    return (Money)((decimal)value); 
} 

उपयोग:

var amount = 200.Para(); 
+0

इस '(मनी) 200' से अधिक का क्या फायदा है? – serdar

+0

@serdar IntelliSense। आप बस डॉट-पी-टैब प्रिंट करते हैं और इसके द्वारा किया जाता है (क्षमा करें, दुर्भाग्यवश यह ब्रैकेट के बिना पूर्णांक अक्षर के साथ काम नहीं कर रहा है)। मेरे लिए भी यह सादा पाठ की तरह पठनीय है –

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

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