অবজেক্টগুলি মোটেও পাস করা হয় না। ডিফল্টরূপে, যুক্তি মূল্যায়ন করা হয় এবং তার মান মান দ্বারা গৃহীত হয়, পদ্ধতি আপনাকে কল করছি প্যারামিটারের প্রাথমিক মান হিসাবে। এখন গুরুত্বপূর্ণ বিষয়টি হ'ল মানটি রেফারেন্স প্রকারের জন্য একটি রেফারেন্স - কোনও বস্তুর কাছে আসার উপায় (বা নাল)। কলকারী থেকে সেই বস্তুর পরিবর্তনগুলি দৃশ্যমান হবে। যাইহোক, আপনি যখন কোনও মান দ্বারা পাস ব্যবহার করছেন তখন কোনও ভিন্ন অবজেক্টের উল্লেখ করার জন্য প্যারামিটারের মান পরিবর্তন করা দৃশ্যমান হবে না , যা সমস্ত ধরণের জন্য ডিফল্ট ।
আপনি পাস-বাই-রেফারেন্স ব্যবহার করতে চান, তাহলে আপনি আবশ্যক ব্যবহার out
বা ref
কিনা প্যারামিটার প্রকার একটি মান টাইপ বা একটি রেফারেন্স প্রকার। সেক্ষেত্রে কার্যকরভাবে পরিবর্তনশীল নিজেই রেফারেন্সের মাধ্যমে পাস হয়, সুতরাং প্যারামিটারটি আর্গুমেন্টের মতো একই স্টোরেজ অবস্থান ব্যবহার করে - এবং প্যারামিটারে নিজেই পরিবর্তনকারীকে দেখা যায়।
তাই:
public void Foo(Image image)
{
// This change won't be seen by the caller: it's changing the value
// of the parameter.
image = Image.FromStream(...);
}
public void Foo(ref Image image)
{
// This change *will* be seen by the caller: it's changing the value
// of the parameter, but we're using pass by reference
image = Image.FromStream(...);
}
public void Foo(Image image)
{
// This change *will* be seen by the caller: it's changing the data
// within the object that the parameter value refers to.
image.RotateFlip(...);
}
আমার একটি নিবন্ধ রয়েছে যা এটিতে আরও অনেক বিস্তৃত । মূলত, "রেফারেন্স দ্বারা পাস" এর অর্থ এটির অর্থ কী তা বোঝায় না।