मेरे पास एक सिस्टम है। ऐरे जिसे मुझे स्ट्रिंग में परिवर्तित करने की आवश्यकता है []। क्या सरणी के माध्यम से लूपिंग करने, प्रत्येक तत्व पर ToString को कॉल करने और स्ट्रिंग को सहेजने के बजाय ऐसा करने का कोई बेहतर तरीका है []? समस्या यह है कि मैं रनटाइम तक तत्वों के प्रकार को जरूरी नहीं जानता हूं।सिस्टम कनवर्ट करें। स्ट्रिंग करने के लिए ऐरे []
उत्तर
LINQ का उपयोग करने के बारे में कैसे?
string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
क्या यह सिर्फ Array
है? या यह है (उदाहरण के लिए) object[]
? यदि ऐसा है तो:
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
नोट से संदर्भ-प्रकारों में से किसी 1-डी सरणी object[]
को castable होना चाहिए (भले ही यह वास्तव में है, उदाहरण के लिए, Foo[]
), लेकिन मूल्य-प्रकार (जैसे int[]
के रूप में) कर सकते हैं ' टी हो तो अगर आप की कोशिश कर सकते:
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
लेकिन अगर यह int[]
की तरह कुछ है, तो आप पाश करने के लिए मैन्युअल रूप से करना होगा।
यह सिर्फ ऐरे है और इसमें वास्तव में मूल्य प्रकार (शायद होगा) शामिल हो सकते हैं। – KrisTrip
@ क्रिसट्रिप - * परिवर्तनीय * "केवल ऐरे" हो सकता है, लेकिन ऑब्जेक्ट नहीं होगा; यह एक निश्चित सरणी प्रकार है। "मूल्य प्रकार" युक्त (** ऑब्जेक्ट [] 'कर सकते हैं) के बीच एक ** बड़ा ** अंतर भी है, और "एक मान-प्रकार सरणी है" (जैसे 'int []')।इस मामले में यह अंतर मायने रखता है। क्या आप स्पष्ट कर सकते हैं कि ** बिल्कुल ** 'अरे' उदाहरण क्या है? –
मुझे ToArray विधि का उपयोग करके ऐरे मिलता है। मैं रनटाइम तक नहीं जानता लेकिन यह एक int [], डबल [], फ्लोट [], स्ट्रिंग [], या कॉम्प्लेक्स [] (उपयोगकर्ता परिभाषित ऑब्जेक्ट) – KrisTrip
आप Array.ConvertAll
, इस तरह उपयोग कर सकते हैं:
string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);
यह शायद संकुचित किया जा सकता है, लेकिन यह सक्षम नहीं होने की सीमा के आस-हो जाता है कास्ट का उपयोग करने के लिए <> या के एक System.Array प्रकार पर Linq का चयन करें वस्तु।
Type myType = MethodToGetMyEnumType();
Array enumValuesArray = Enum.GetValues(myType);
object[] objectValues new object[enumValuesArray.Length];
Array.Copy(enumValuesArray, objectValues, enumValuesArray.Length);
var correctTypeIEnumerable = objectValues.Select(x => Convert.ChangeType(x, t));
अभी भी जेनेरिक वस्तुओं की एक सरणी है। –
सरल और मूल दृष्टिकोण;
Array personNames = Array.CreateInstance(typeof (string), 3);
// or Array personNames = new string[3];
personNames.SetValue("Ally", 0);
personNames.SetValue("Eloise", 1);
personNames.SetValue("John", 2);
string[] names = (string[]) personNames;
// or string[] names = personNames as string[]
foreach (string name in names)
Console.WriteLine(name);
या सिर्फ एक अन्य दृष्टिकोण: तुम बहुत personNames.ToArray
उपयोग कर सकते हैं: क्रम जब तक प्रकार बिना जाने
string[] names = (string[]) personNames.ToArray(typeof (string));
, आप अनिवार्य रूप से सरणी पर पुनरावृति करने की जरूरत है (LINQ या जो कुछ भी विधि के साथ यह हो)। – GrayWizardx
(टिप्पणी का उत्तर दिया गया) –