से उनका उपयोग करके, निम्नलिखित कोड में, मैं कक्षा टेस्ट क्लास से एक विधि (कार्य) करने की कोशिश कर रहा हूं, मुख्य कार्यक्रम में कुछ चर के मूल्यों को वापस किए बिना उन्हें बदलने के लिए। चर टेस्ट क्लास कन्स्ट्रक्टर में संदर्भ द्वारा पारित किया जाता है।सी # - कन्स्ट्रक्टर के संदर्भ में गुजरने वाले पैरामीटर, विधि
class Program
{
static void Main(string[] args)
{
int a, b, c, d;
a = 5; b = 10; c = 20; d = 25;
Console.WriteLine("Main before TestClass: a=" + a + " b=" + b + " c=" + c + " d=" + d);
TestClass testObj = new TestClass(ref a,ref b,ref c,ref d);
testObj.Work();
Console.WriteLine("Main after TestClass: a=" + a + " b=" + b + " c=" + c + " d=" + d);
Console.ReadLine();
}
}
public class TestClass
{
int _a, _b, _c, _d;
public TestClass(ref int a, ref int b, ref int c, ref int d)
{
_a = a; _b = b; _c = c; _d = d;
}
public void Work()
{
Console.WriteLine("Work before changing: a=" + _a + " b=" + _b + " c=" + _c + " d=" + _d);
_a = 0; _b = 1; _c = 2; _d = 3;
Console.WriteLine("Work after changing: a=" + _a + " b=" + _b + " c=" + _c + " d=" + _d);
}
}
हालांकि यह कोड लौटाता है:
Main before TestClass: a=5 b=10 c=20 d=25
Work before changing: a=5 b=10 c=20 d=25
Work after changing: a=0 b=1 c=2 d=3
Main after TestClass: a=5 b=10 c=20 d=25
वहाँ विधि मुख्य कार्यक्रम में चर के मूल्यों को बदल के लिए कोई तरीका है? धन्यवाद!
आपको '_a', आदि में * संदर्भ * स्टोर करना होगा, लेकिन आपने उन्हें अभी 'int' के रूप में घोषित किया है। जैसा कि यह पता चला है, सीएलआर इस अवधारणा का समर्थन नहीं करता है - आप * स्थानीय चर हैं जो संदर्भ हैं, लेकिन फ़ील्ड नहीं। [लेकिन सी # आपको ऐसे स्थानीय चर घोषित करने की भी अनुमति नहीं देता है] (http://blogs.msdn.com/b/ericlippert/archive/2011/06/23/ref-returns-and-ref-locals.aspx)। –