আপনি outদুটি প্রসঙ্গে প্রাসঙ্গিক কীওয়ার্ডটি ব্যবহার করতে পারেন (প্রতিটি বিস্তারিত তথ্যের লিঙ্ক), পরামিতি সংশোধক হিসাবে বা ইন্টারফেস এবং প্রতিনিধিদের জেনেরিক ধরণের পরামিতি ঘোষণায়। এই বিষয়টি প্যারামিটার সংশোধককে নিয়ে আলোচনা করে, তবে জেনেরিক ধরণের পরামিতি ঘোষণাগুলির তথ্যের জন্য আপনি এই অন্যান্য বিষয়টি দেখতে পারেন।
outশব্দ কারণ আর্গুমেন্ট রেফারেন্স দ্বারা পাস করতে হবে। এটি কীওয়ার্ডের মতো ref, ব্যতীত refভেরিয়েবলটি পাস হওয়ার আগেই আরম্ভ করা দরকার। একটি outপ্যারামিটার ব্যবহার করতে , পদ্ধতির সংজ্ঞা এবং কলিং পদ্ধতি উভয়ের অবশ্যই স্পষ্টভাবে outকীওয়ার্ডটি ব্যবহার করা উচিত । উদাহরণস্বরূপ: সি #
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
যদিও outআর্গুমেন্ট হিসাবে ভেরিয়েবলগুলি পাস করার আগে পাস করার আগে আরম্ভ করা উচিত নয়, তথাকথিত পদ্ধতিটি ফিরে আসার আগে একটি মান নির্ধারণ করা প্রয়োজন।
যদিও refএবং outকিওয়ার্ড কারণ বিভিন্ন রান-টাইম আচরণ, তারা কম্পাইল সময়ে পদ্ধতি স্বাক্ষর অংশ হিসেবে বিবেচনা করা হয় না। সুতরাং, পদ্ধতিগুলি ওভারলোড করা যাবে না যদি কেবলমাত্র পার্থক্যটি হ'ল এক পদ্ধতিটি একটি refআর্গুমেন্ট নেয় এবং অন্যটি outআর্গুমেন্ট নেয় । নিম্নলিখিত কোডগুলি উদাহরণস্বরূপ, সংকলন করবে না: সি #
class CS0663_Example
{
// Compiler error CS0663: "Cannot define overloaded
// methods that differ only on ref and out".
public void SampleMethod(out int i) { }
public void SampleMethod(ref int i) { }
}
ওভারলোডিং করা যায়, তবে, যদি একটি পদ্ধতি একটি refবা outযুক্তি নেয় এবং অন্যটি এর মতো ব্যবহার করে না: সি #
class OutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { i = 5; }
}
বৈশিষ্ট্যগুলি ভেরিয়েবল নয় এবং তাই outপরামিতি হিসাবে পাস করা যায় না ।
অ্যারে পাস করার বিষয়ে তথ্যের জন্য, অ্যারে ব্যবহার করে refএবং out(সি # প্রোগ্রামিং গাইড) দেখুন।
আপনি ব্যবহার করতে পারবেন না refএবং outপদ্ধতি নিম্নলিখিত ধরণের জন্য এখানে:
Async methods, which you define by using the async modifier.
Iterator methods, which include a yield return or yield break statement.
উদাহরণ
outআপনি একাধিক মান ফিরিয়ে দিতে কোনও পদ্ধতি চাইলে কোনও পদ্ধতি ঘোষণা করা কার্যকর। নিম্নলিখিত উদাহরণটি outএকক পদ্ধতিতে কল দিয়ে তিনটি ভেরিয়েবল ফেরত দেয়। মনে রাখবেন যে তৃতীয় যুক্তি নালকে বরাদ্দ করা হয়েছে। এটি বিকল্পগুলিকে মানগুলি ফিরিয়ে আনতে সক্ষম করে। সি শার্প
class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}
outএটি বরাদ্দ করার আগে থেকে পড়া যায় না।refএই সীমাবদ্ধতা নেই। সুতরাং যে আছে।