2010-10-12 14 views
14

सी/सी ++ में, मेरे पास एक समूह का समूह है जिसे मैं मुख्य() से कॉल करता हूं, और मैं इसे सी # में फिर से लिखना चाहता हूं। क्या मैं अकेले काम कर सकता हूं (विधियों) या क्या मुझे उन्हें किसी अन्य वर्ग में रखना है? मुझे पता है कि मेरे पास एक ही कक्षा के भीतर विधियां हो सकती हैं, लेकिन मैं प्रत्येक फ़ंक्शन/विधि के लिए एक फ़ाइल रखना चाहता हूं।कक्षा के बिना सी # में अकेले खड़े हो सकते हैं?

इस तरह काम करता है:

using System.IO; 
using System; 


class Program 
{ 
    static void Main() 
    { 
House balls = new House(); 
balls.said(); 

    } 
} 
    public class House 
    { 
     public void said() 
     { 
      Console.Write("fatty"); 
      Console.ReadLine(); 

     } 
    } 

लेकिन तब मैं सदन का एक उदाहरण बनाने के लिए और कॉल कहा(), जब सी में मैं सिर्फ इतना कहा कॉल कर सकते हैं()।

+1

फिर आप स्थिर तरीकों का उपयोग कर सकते हैं न एक उदाहरण – w69rdy

+3

सुझाव बनाने की जरूरत: क्या अपने कोड की इन पंक्तियों पर हो रहा है के बारे में सोच: 'Console.Write (...);' और 'कंसोल ReadLine(); ' – Dinah

उत्तर

15

नहीं। उन्हें static बनाएं और उन्हें static उपयोगिता कक्षा में रखें यदि वे वास्तव में आपके किसी मौजूदा कक्षा में फिट नहीं होते हैं।

1

आप static के रूप में अपने विधि (जो है: public static void said()) की घोषणा तो आप बस जो के रूप में करीब है के रूप में आप सी # में मिल जाएगा House.said() साथ यह कॉल कर सकते हैं,।

4

सी # में स्टैंडअलोन कार्यों की कोई अवधारणा नहीं है। सब कुछ एक वस्तु है।

आप कुछ उपयोगिता वर्ग पर स्थिर तरीकों बना सकते हैं और एक वर्ग जैसे का उदाहरण बनाकर बिना उन फोन

class Program 
{ 
    static void Main() 
    { 
    House.said(); 
    } 
} 

public class House 
    { 
     public static void said() 
     { 
      Console.Write("fatty"); 
      Console.ReadLine(); 

     } 
    } 
+0

नकारात्मक वोट क्यों? –

+0

हाहा, मैं नहीं था। –

+0

अब, जो भी "फिक्स्ड" का जवाब देगा, नीचे मतदान पर पकड़ा जाएगा। प्रतीक्षा करें .. ओएच एस ~~~। –

3

हालांकि स्टैंड-अलोन कार्यों की अवधारणा नेट में मौजूद है, सी # की अनुमति नहीं है आप ऐसे कार्यों को निर्दिष्ट करने के लिए। आपको उन्हें एक स्थिर Utils कक्षा या इसी तरह के अंदर चिपकने की आवश्यकता है।

1

आप प्रोग्राम कक्षा में अपने सभी तरीकों को जोड़ सकते हैं, लेकिन यह जल्द ही एक अनजान गड़बड़ बन जाएगा, जिसे आमतौर पर भगवान वर्ग या बॉल ऑफ मिड एंटी-पैटर्न कहा जाता है।

प्रत्येक समारोह के लिए एक फ़ाइल को बनाए रखना इसी तरह एक बड़ी गड़बड़ी बन जाएगा। प्रश्न "मैं कहां डाल सकता हूं" और "मुझे कौन से वर्ग बनाना चाहिए" का उत्तर Design Patterns द्वारा दिया गया है। कक्षाएं व्यवहार (फ़ंक्शंस) और एक चीज (सिंगल रिपॉन्सिबिलिटी)

+1

हाँ, विशेष रूप से भगवान वर्ग से बचने के लिए देख रहे हैं। –

+1

चीजें (अभिनेता, बिल्डर्स) करने और डेटा ले जाने के लिए कक्षाएं बनाएं (डेटा ट्रांसफर ऑब्जेक्ट्स।) कई वर्गों से डरो मत, क्योंकि यह (एक बिंदु पर) चिंता का अच्छा पृथक्करण का संकेत है। सी # में ओपन-सोर्स प्रोजेक्ट्स कक्षाओं और विधियों को व्यवस्थित करने के लिए मार्गदर्शन का एक अच्छा स्रोत हैं। –

4

आपको उन्हें कक्षा में रखना होगा, लेकिन कक्षा का उल्लेख दूसरों के जैसा स्थिर हो सकता है। आप वास्तव में प्रत्येक विधि के लिए एक अलग फाइल करना चाहते हैं, तो आपको निम्न प्राप्त करने के लिए वर्ग के रूप में आंशिक चिह्नित कर सकते हैं:

Program.cs 
---------- 
class Program 
{ 
    static void Main() 
    { 
     House.said(); 
     House.saidAgain(); 
    } 
} 

House-said.cs 
------------- 
public static partial class House 
{ 
    public static void said() 
    { 
     Console.Write("fatty"); 
     Console.ReadLine(); 
    } 
} 

House-saidAgain.cs 
------------------ 
public static partial class House 
{ 
    public static void saidAgain() 
    { 
     Console.Write("fattyAgain"); 
     Console.ReadLine(); 
    } 
} 

मैं हर एक को अलग करने की सिफारिश नहीं होगा, लेकिन। आंशिक कक्षाओं का अधिकतर उपयोग किया जाता है ताकि डिजाइनर से उत्पन्न कोड उसी वर्ग में किसी भी कस्टम कोड को ओवरराइट नहीं करेगा। अन्यथा आप आसानी से सैकड़ों फाइलों के साथ समाप्त हो सकते हैं और एक विधि से दूसरे तरीके से स्थानांतरित करने का कोई आसान तरीका नहीं है। यदि आपको लगता है कि आपको आंशिक वर्ग की आवश्यकता है क्योंकि विधियों की संख्या अनजान हो रही है, तो आपको शायद तर्क को अन्य वर्ग में अलग करने की आवश्यकता है।

0

संदर्भ के लिए, मैं using static यहां सी # 6 के अतिरिक्त जोड़ना चाहता हूं।

अब आप उस कक्षा के नाम को बार-बार टाइप किए बिना स्थिर वर्ग के तरीकों का उपयोग कर सकते हैं। सवाल मिलान एक उदाहरण होगा:

House.cs

public static class House 
{ 
    public static void Said() 
    { 
     Console.Write("fatty"); 
     Console.ReadLine(); 
    } 
} 

कार्यक्रम।सीएस

using static House; 

class Program 
{ 
    static void Main() 
    { 
     Said(); 
    } 
} 
संबंधित मुद्दे