मैं निम्नलिखित चरित्र को प्रबंधित करने का प्रयास: ⨝ (http://www.fileformat.info/info/unicode/char/2a1d/index.htm)string.Empty.StartsWith (((char) 10781)। ToString()) हमेशा सच देता है?
आप की जाँच इस चरित्र के साथ शुरू है कि क्या कोई रिक्त स्ट्रिंग है, तो यह हमेशा सच देता है, यह किसी भी मतलब नहीं है! ऐसा क्यों है?
// visual studio 2008 hides lines that have this char literally (bug in visual studio?!?) so i wrote it's unicode instead.
char specialChar = (char)10781;
string specialString = specialChar.ToString();
// prints 1
Console.WriteLine(specialString.Length);
// prints 10781
Console.WriteLine((int)specialChar);
// prints false
Console.WriteLine(string.Empty.StartsWith("A"));
// both prints true WTF?!?
Console.WriteLine(string.Empty.StartsWith(specialString));
Console.WriteLine(string.Empty.StartsWith(((char)10781).ToString()));
संस्कृति-संवेदनशील-तुलना-दर-डिफ़ॉल्ट कम से कम आश्चर्य के सिद्धांत के एक बड़े विनाशकारी उल्लंघन की तरह लगता है। क्या अंगूठे का कोई नियम निर्धारित करने के लिए है कि किस प्रकार के तरीकों को 'सामान्य' सामान्य व्यवहार प्राप्त करने के लिए स्ट्रिंग कॉम्परिसन की आवश्यकता होती है और कौन नहीं? – bobince
@ बॉबन्स- क्या आपने यह प्रश्न देखा है- http: // stackoverflow।com/प्रश्न/72,696/जो-है-आम तौर पर सबसे अच्छा के लिए उपयोग-stringcomparison-ordinalignorecase या stringcom – RichardOD