2010-02-15 27 views
6

क्या बेहतर(स्ट्रिंग) पाठक [0] बनाम Convert.ToString (पाठक [0])

var s = (string)reader[0] 

या

var s = Convert.ToString(reader[0]) 

है?

+0

पाठक क्यों नहीं [0]। विकल्प के रूप में। ToString()? – Oded

+2

क्या आप "बेहतर" परिभाषित कर सकते हैं? और तेज? और अधिक मजबूत? पढ़ने के लिए आसान है? छोटी स्मृति पदचिह्न? –

उत्तर

7

मैं कहेंगे reader.GetString(0)

+2

एनईटीएफएक्स 2 की सर्करा रिलीज मैंने बहुत सारे शोध किए और पाया कि विधियों को अनुक्रमित रूप से देखा गया सभी पाठक पद्धतियों का सर्वश्रेष्ठ प्रदर्शन था। – keithwarren7

+0

मैंने इसे 3.5 में भी मापा है और पाया है कि यह '(स्ट्रिंग) पाठक [0]' से मापने योग्य रूप से बेहतर प्रदर्शन करता है। – mquander

+0

क्या पाठक के साथ समस्याएं हैं। गेटस्ट्रिंग (0) ब्लॉब मान पढ़ना, उदा। VARCHAR (मैक्स)? कोड की पठनीयता और इरादे पर विचार करने के लिए – Brettski

1

मुझे लगता है कि होगा reader[0].ToString();

2

तो पाठक [0] वास्तव में एक स्ट्रिंग, तो (string)reader[0] है।

यह स्पष्ट और सबसे तेज़ तेज़ है (जब तक कि संकलक कुछ जादुई अनुकूलन नहीं करता है जिसे मैं नहीं जानता)।

1

क्या

के बारे में

पाठक [0] .ToString();

2
var s = (string)reader[0] 

आप एक वर्ग डाली अपवाद दे देंगे अगर यह एक स्ट्रिंग के रूप में ढाला नहीं जा सकता है, जबकि

var s = Convert.ToString(reader[0]) 

इसे और अधिक शान से संभाल लेंगे और आप अशक्त हो जाएगा अगर यह नहीं कर सकते परिवर्तित किया जाना यह पाठक [0] के लिए अधिक प्रकार की ऑब्जेक्ट को भी संभाल देगा क्योंकि अन्य विधि केवल उन स्थानों को अनुमति देगी जहां टाइप को स्ट्रिंग में डाला जा सकता है, जबकि यह कनवर्ट क्लास को किसी भी प्रकार का समर्थन करेगा। जो मैं मानता हूं वह अधिक है। लेकिन नहीं हो सकता है ...

2

यह तेजी से होता है के बारे में ~ 30% मेरे परीक्षण में तेजी से:

var s = (string)reader[0]; 

लेकिन यह झटका नहीं होगा जब यह शून्य है:

var s = Convert.ToString(reader[0]); 
4
// Conveys that you are sure that reader[0] is a string and 
// if it's not you probably have bigger problems 
// than the resulting exception 
var s = (string)reader[0]; 

// Conveys that you are hoping that reader[0] is convertible to a string 
var s = Convert.ToString(reader[0]) 

तो शायद यह संदर्भ को ध्यान में रखते हुए चुनने का मामला है।

+1

+1, न केवल प्रदर्शन। – rob

2

साथ जाना होगा क्यों कोई भी पठनीयता और रख-रखाव पर विचार किया?

मैं जानता हूँ कि लेखक पूछता है के बारे में:

var s = (string)reader[0]  
or  
var s = Convert.ToString(reader[0]) 

लेकिन क्या बारे में:

string s = reader["Fieldname"].ToString(); 

thats अधिक पठनीय और अधिक सुरक्षित आप का आदान-प्रदान/हटाने/स्तंभ जोड़ने और सूचकांक से बदल रहा है, तो .. यह निश्चित रूप से अधिक मूल्यवान है।

एक लड़के ने कहा कि हार्ड कास्ट 30% तेज है। अच्छी तरह से 1 एमएस का 30% 1,333 एमएस है? निश्चित रूप से पूरे डेटा लाने का 30% नहीं।

+0

इस उत्तर को ध्यान में रखा जाना चाहिए। – jason

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