params
कीवर्ड केवल वाक्यात्मक चीनी आप तर्क के किसी भी संख्या के साथ इस तरह के एक विधि कॉल करने की अनुमति देता है। हालांकि, उन तर्कों को हमेशा एक सरणी के रूप में विधि में पास कर दिया जाता है।
इसका मतलब है कि Foo(123, "hello", DateTime.Now)
Foo(new object[] { 123, "hello", DateTime.Now })
के बराबर है।
इसलिए तर्क Foo
से सीधे string.Format
को इस तरह से पारित कर सकते हैं:
void Foo(params object[] args)
{
Bar(string.Format("Some {0} text {1} here {2}", args));
}
हालांकि, इस विशेष मामले में, आप तीन तर्कों की मांग (क्योंकि आप {0}, {1} और {2 है } अपने प्रारूप में)। इसलिए आपको अपना कोड बदलना चाहिए:
void Foo(object arg0, object arg1, object arg2)
{
Bar(string.Format("Some {0} text {1} here {2}", arg0, arg1, arg2));
}
... या मार्सेलो ने सुझाव दिया है।
स्रोत
2011-04-04 08:28:35
के लिए आप आर्ग के प्रकार निर्दिष्ट नहीं किया है की कोशिश कर सकते। 'पैरा स्ट्रिंग [] args होना चाहिए। इसके अलावा, आप इसे सामान्य सरणी के रूप में पास कर सकते हैं। 'पैराम्स' केवल एक कंपाइलर कीवर्ड है जो भेजे गए पैरामीटर से एक सरणी बनाता है। – HuBeZa
@ हूबेज़ा: उन्होंने इस प्रकार को निर्दिष्ट किया: यह 'ऑब्जेक्ट' है। वह खुद को स्ट्रिंग पैरामीटर तक सीमित क्यों कर सकता है? – ChrisWue
@ क्रिस, मेरे ब्राउज़र या मेरी आंखों के साथ कुछ गलत था। मैं कसम खाता हूँ कि यह 'शून्य फू था (पैराम्स तर्क []) '। मुझे छुट्टी की आवश्यकता है :) – HuBeZa