2008-10-08 16 views
6

के बीच चलते समय सोचते हैं कि यह जावा और सी # दोनों में काम करने का आनंद लेने वाले किसी के लिए एक प्रश्न है।क्या आप जावा और सी #

क्या आप पाते हैं आप जब आप अन्य करने के लिए एक से स्थानांतरित किसी तरह की मानसिक संदर्भ स्विच करना है?

मैं इस समय दोनों में काम कर रहा हूं और क्योंकि वाक्यविन्यास और पुस्तकालय इतने समान हैं और फिर भी काफी अलग हैं, जब मैं एक से दूसरे में जाता हूं तो मुझे निराशा होती है।

यह इतना अधिक की तुलना में मैं किसी भी अन्य प्रोग्रामिंग भाषाओं के बीच चलती आ रही है, है।

किसी भाषाओं कि इतने समान हैं के लिए अलग तरह से अपने मस्तिष्क को काम करने के लिए कोई सुझाव है?

उत्तर

6

हाँ, मैं एक मानसिक संदर्भ स्विच करना है - क्योंकि LINQ जावा :(

इसके अलावा में उपलब्ध नहीं है, वहाँ foreach (X x in y) बनाम for (X x : y) की तरह थोड़ा चीजें हैं जो अक्सर मुझे ट्रिप कर रहे हैं, लेकिन नहीं एक विशाल अन्यथा राशि

अपने दिमाग को अलग-अलग काम करने के लिए एक युक्ति के रूप में: दूसरी भाषा के नामकरण सम्मेलनों का उपयोग करने के लिए प्रलोभन में न आएं। मुझे लगता है कि जावा में ऊंट-आधारित विधि नामों का उपयोग करना एक है उदाहरण के लिए, मेरे दिमाग में अच्छा झुकाव, उदाहरण के लिए

संपादित करें: जेनेरिकों के संदर्भ में मतभेद महत्वपूर्ण हैं और कभी-कभी मस्तिष्क-युद्ध भी हो सकते हैं।

+0

बधाई हो, आपने थोड़ी देर में इस प्रश्न का दो बार जवाब दिया :), डॉटनेट रॉक्स श्रोताओं को पता है कि मैं किस बारे में बात कर रहा हूं ;-) –

3

मुझे लगता है कि सबसे कठिन स्विच (जो सी # बेहतर है) जेनरिक आसपास हैं, प्रतिनिधियों (अनाम भीतरी वर्गों के साथ हैक्स की जो जावा तरह) और घटनाओं (जो जावा नहीं है)

मुझे लगता है कि लगता है यह सुनिश्चित करना कि आप भाषा के मुहावरे का उपयोग कर रहे हैं (यानी सी # में इंटरफ़ेस बनाने के बजाय प्रतिनिधियों का उपयोग करना) आपके दिमाग को गियर में स्नैप करने में मदद करेगा।

2

वे समान हैं कि अंतर मुझे यात्रा करते हैं। मैंने कॉलेज में जावा सीखा और सी # का उपयोग करना शुरू किया जब मुझे अपना पहला प्रोग्रामिंग जॉब मिला।

सी # में .Net 1.1 बहुत अधिक समान लग रहा था, लेकिन अब सी # 3.0 में, मैं प्रतिनिधियों, जेनेरिक और खासकर एपीआई संरचनाओं जैसे शब्दकोशों का उपयोग करता हूं, जो मैंने जावा में कभी भी किया है। मैंने सी # और अधिक के कार्यात्मक पहलुओं का उपयोग किया है क्योंकि मैं सीखने के माध्यम से अपना रास्ता काम करता हूं F # (अब उसमें लिखना या ओकैमल वास्तव में मुझे सोचने का तरीका बदलने के लिए मजबूर करता है)।

3

दूसरों के उल्लेख के रूप में लैंगेज अंतर सबसे स्पष्ट और समस्याग्रस्त है। मुझे भी कई बार पुस्तकालय मतभेद मिलते हैं और वास्तव में बहुत समय बर्बाद कर रहे हैं।

"विवरण" वास्तव में आप के साथ-साथ, इस तरह के कैसे समझ स्मृति मॉडल काम करता है या जिस तरह से अपने क्रम अनुकूलन प्रदर्शन के रूप में प्राप्त कर सकते हैं। क्रम पर्यावरण की स्मृति मॉडल, कचरा संग्रहण तकनीक, थ्रेडिंग मॉडल, आदि की गहन जानकारी होने रास्ता आपको लगता है में महत्वपूर्ण परिवर्तन बना सकते हैं और सॉफ्टवेयर विकसित कर सकते हैं।

मैं बुद्धिमानी से उस स्तर पर जावा बनाम सी # के विवरण की तुलना नहीं कर सकता, लेकिन मैं कह सकता हूं कि जावा में कई चीजें मैं करूँगा, अगर मैं सी # में कर सकता हूं तो मुझे असहज या अनिश्चितता है क्योंकि मैं इसका निम्न स्तर नहीं समझता विवरण। यह स्मृति प्रबंधन से निपटने के लिए जीयूआई-कार्यकर्ता बातचीत से सबकुछ के लिए लिखने वाले कोड को प्रभावित करता है।

मुझे जावा और सी # में मतभेदों का सामना करने का सबसे अच्छा तरीका मिल गया है, उन्हें बस अलग-अलग भाषाओं के रूप में सोचना है - "सी # और जावा के जाल से बचने के लिए अलग-अलग वर्ग नामों के साथ समान भाषा है।"

3

जावा और सी # के बीच स्ट्रिंग समानता तुलना करने के तरीके में अंतर एक बात है जिसे ध्यान में रखा जाना चाहिए, खासकर जब जावा में काम करने के लिए सी # में काम करने से आगे बढ़ना।

सी # में आप == ऑपरेटर के साथ दो string उदाहरणों पर एक मूल्य तुलना कर सकते हैं:

// C# string value comparison example 
string string1 = GetStringValue1(); 
string string2 = GetStringValue2(); 

// Check to see whether the string values are equal 
if (string1 == string2) 
{ 
    // Do something... 
} 

जावा में, == ऑपरेटर ताकि आप उपयोग करने की आवश्यकता, एक संदर्भ (नहीं मान) तारों पर तुलना करता है equals() विधि:

// Java string value comparison example 
String string1 = getStringValue1(); 
String string2 = getStringValue2(); 

// Check to see whether the string values are equal 
if (string1.equals(string2)) 
{ 
    // Do something... 
} 

निष्कर्ष: किसी भी जब जावा में तार की तुलना,, कि ऑपरेटर == भूलना एक मूल्य समानता तुलना नहीं करता है नहीं है जैसे कि यह जब करता कॉम सी # में तार तारों। (एक ही अवधारणा ऑपरेटर != पर भी लागू होती है।)

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