2011-04-26 15 views
5

में विशिष्ट इंडेक्स से फ़ंक्शन करने के लिए पास सरणी I सी # (पहले सी ++ पर काम कर रहा हूं) में नया हूं, मैं विशिष्ट अनुक्रमणिका के साथ कार्य करने के लिए सरणी पास करता था। यहाँ सी ++ में कोडसी # .Net

void MyFunc(int* arr) { /*Do something*/ } 

//In other function 
int myArray[10]; 
MyFunc(&myArray[2]); 

मैं सी # *नेट में कुछ इस तरह कर सकते हैं है? *

+0

मुझे नहीं लगता कि ऐसी चीज करना संभव है। – alex

उत्तर

5

जैसा कि ऐरे संख्यात्मक है, आप LINQ function Skip का उपयोग कर सकते हैं।

void MyFunc(int[] array){ /*Do something*/ } 

int[] myArray = { 0, 1, 2, 3, 4, 5, 6 } 
MyFunc(myArray.Skip(2)); 
+1

यह काम करता है मुझे छोड़ने के बाद टॉएरे को जोड़ना होगा। myArray.Skip (1) .ToArray() – vrajs5

+1

@ vrajs5: MyFunc को IENumerable स्वीकार करने के बारे में सोचें, अगर MyFunc किसी भी तत्व के बाद सरणी को प्रोसेस करता है। ToArray() myArray की एक प्रति बनाता है। – Ozan

+0

आह, यह अच्छा है, मैंने पहले लिंक स्किप फ़ंक्शन को कभी नहीं देखा है। व्यक्तिगत रूप से, यह इतना अक्षम लगता है कि मुझे लगता है कि मैं केवल 2 तत्वों को आंतरिक रूप से छोड़ने के लिए MyFunc को बदल दूंगा, या यहां तक ​​कि MyFunc के प्रारंभ करने के लिए तत्व संख्या के लिए एक नया param भी जोड़ूंगा ... मुझे लगता है कि यह निर्भर करता है ... – jonchicoine

-2
public void MyFunc(ref int[] arr) 
{ 
    // Do something 
} 

int[] myArray = .... ; 
MyFunc(ref myArray); 

ref बारे में अधिक जानकारी के लिए यहां देखें!

+2

वह एक सरणी का हिस्सा पास करना चाहता है, पूरी बात नहीं। यह बिल्कुल अलग है। – alex

0

लिनक्स संस्करण मेरा पसंदीदा है। हालांकि यह बहुत ही अक्षम साबित होगा।

आप

int myArray[10]; 
int mySlice[8]; 
Array.Copy(myArray, 2, mySlice, 0); 

करते हैं और समारोह

0

नेट System.ArraySegment<T> संरचना जो इस सटीक यूज-केस के पते है करने के लिए mySlice दे सकते हैं।

लेकिन मैंने कभी भी इस संरचना को कोड में इस्तेमाल नहीं किया है, अच्छे कारणों से: यह काम नहीं करता है। विशेष रूप से, यह IEnumerable<T> जैसे किसी भी इंटरफेस को लागू नहीं करता है। लिंक समाधान (= Skip का उपयोग करके) परिणामस्वरूप सबसे अच्छा विकल्प है।

0

शायद ऐसा करने का सबसे आसान तरीका है:

public void MyFunction(ref int[] data,int index) 
    { 
     data[index]=10; 
    } 

और इस तरह से यह कहते हैं:

int[] array= { 1, 2, 3, 4, 5 }; 
Myfunction(ref array,2); 
foreach(int num in array) 
    Console.WriteLine(num); 

यह प्रिंट होगा 1,2,10,4,5