2009-11-18 17 views
11

हाय सब मैं लिखने और अनाम प्रतिनिधि को लिखने की कोशिश कर रहा हूं। क्योंकि प्रतिनिधि के बीच पूर्णांक चर साझा किया जाता है, मुझे इसे प्रत्येक प्रतिनिधि का स्थानीय उदाहरण होने की आवश्यकता होती है जैसे कि [0] हमेशा निकिक्स [0] प्राप्त होता है, आरएस [1] हमेशा निकिक्स [1] और इतने पर ... कैसे क्या मैं इसे प्राप्त करूंगा।बेनामी सी # प्रतिनिधि लूप

for (int i = 0; i < nics.Count; i++) 
    { 
     rs[i] = new RollingSeries(monitor, new RollingSeries.NextValueDelegate(delegate() 
     { 
      return GetNetworkUtilization(nics[i]); 
      })); 
    } 

अब्दुल खालिक

+5

आप के लिए क्या पूछना के बारे में सावधान अत्यंत * * रहें:

आप के बारे में क्यों ऐसा होता है उत्सुक हैं, तो यहाँ एक MSDN ब्लॉग एक विस्तृत तकनीकी स्पष्टीकरण युक्त प्रविष्टि है। क्या आप चाहते हैं कि आपका पहला बंद हमेशा एनआईक्स [0] * में मूल्य प्राप्त करें, जब प्रतिनिधि का आह्वान किया जाए *, या आप उस समय प्राप्त होने वाले मूल्य को प्राप्त करना चाहते हैं जो उस समय [0] * में हुआ था प्रतिनिधि बनाया गया था *? वे दो अलग-अलग चीजें हैं; nics [0] एक चर है, इसलिए इसका मूल्य समय के साथ बदल सकता है। क्या आप उस परिवर्तन को देखने के लिए बंद करना चाहते हैं, या उस परिवर्तन को अनदेखा करना चाहते हैं? –

उत्तर

20

i की स्थानीय प्रतिलिपि बनाएँ:

for (int i = 0; i < nics.Count; i++) 
    { 
     int j = i; 
     rs[i] = new RollingSeries(monitor, new RollingSeries.NextValueDelegate(delegate() 
     { 
      return GetNetworkUtilization(nics[j]); 
      })); 
    } 

The Beauty of Closures

+0

या सरणी में आइटम की एक स्थानीय प्रति। – Dykam

6

उपयोग एक स्थानीय यात्रा प्रति एक अलग मूल्य प्राप्त करने के

for (int i = 0; i < nics.Count; i++) 
    { 
     int localI = i; 
     rs[i] = new RollingSeries(monitor, new RollingSeries.NextValueDelegate(delegate() 
     { 
      return GetNetworkUtilization(nics[localI]); 
      })); 
    } 
संबंधित मुद्दे