আমি এই প্রশ্নের সি ++ সংস্করণ পড়েছি কিন্তু সত্যই তা বুঝতে পারি নি।
কেউ দয়া করে পরিষ্কারভাবে ব্যাখ্যা করতে পারেন যদি এটি করা যায় এবং কীভাবে?
আমি এই প্রশ্নের সি ++ সংস্করণ পড়েছি কিন্তু সত্যই তা বুঝতে পারি নি।
কেউ দয়া করে পরিষ্কারভাবে ব্যাখ্যা করতে পারেন যদি এটি করা যায় এবং কীভাবে?
উত্তর:
সি # 7 এবং উপরে, এই উত্তরটি দেখুন ।
পূর্ববর্তী সংস্করণগুলিতে, আপনি .NET 4.0 + এর টিপল ব্যবহার করতে পারেন :
উদাহরণ স্বরূপ:
public Tuple<int, int> GetMultipleValue()
{
return Tuple.Create(1,2);
}
দুটি মান সহ টিপলগুলির বৈশিষ্ট্য Item1
এবং Item2
রয়েছে।
public (int sum, int count) GetMultipleValues() { return (1, 2); }
এটি আমাদের ডকুমেন্টেশন বিষয়টির উদাহরণ থেকে নেওয়া হয়েছিল ।
এখন যে সি # 7 প্রকাশিত হয়েছে, আপনি নতুন অন্তর্ভুক্ত টিপলস সিনট্যাক্স ব্যবহার করতে পারেন
(string, string, string) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
যা তখন এভাবে ব্যবহার করা যেতে পারে:
var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");
আপনি নিজের উপাদানগুলিকেও নাম সরবরাহ করতে পারেন (যাতে তারা "আইটেম 1", "আইটেম 2" ইত্যাদি নয়)। আপনি স্বাক্ষর বা রিটার্ন পদ্ধতিতে একটি নাম যুক্ত করে এটি করতে পারেন:
(string first, string middle, string last) LookupName(long id) // tuple elements have names
অথবা
return (first: first, middle: middle, last: last); // named tuple elements in a literal
এগুলি ডিকনস্ট্রাক্ট করা যায় যা এটি একটি দুর্দান্ত সুন্দর নতুন বৈশিষ্ট্য:
(string first, string middle, string last) = LookupName(id1); // deconstructing declaration
পরীক্ষা করে দেখুন এই লিঙ্কে কি করা যেতে পারে উপর আরো উদাহরণ দেখতে :)
আপনি তিনটি বিভিন্ন উপায়ে ব্যবহার করতে পারেন
1. রেফ / আউট প্যারামিটার
রেফ ব্যবহার করে:
static void Main(string[] args)
{
int a = 10;
int b = 20;
int add = 0;
int multiply = 0;
Add_Multiply(a, b, ref add, ref multiply);
Console.WriteLine(add);
Console.WriteLine(multiply);
}
private static void Add_Multiply(int a, int b, ref int add, ref int multiply)
{
add = a + b;
multiply = a * b;
}
ব্যবহার করে:
static void Main(string[] args)
{
int a = 10;
int b = 20;
int add;
int multiply;
Add_Multiply(a, b, out add, out multiply);
Console.WriteLine(add);
Console.WriteLine(multiply);
}
private static void Add_Multiply(int a, int b, out int add, out int multiply)
{
add = a + b;
multiply = a * b;
}
2. কাঠামো / শ্রেণি
কাঠামো ব্যবহার:
struct Result
{
public int add;
public int multiply;
}
static void Main(string[] args)
{
int a = 10;
int b = 20;
var result = Add_Multiply(a, b);
Console.WriteLine(result.add);
Console.WriteLine(result.multiply);
}
private static Result Add_Multiply(int a, int b)
{
var result = new Result
{
add = a * b,
multiply = a + b
};
return result;
}
ক্লাস ব্যবহার:
class Result
{
public int add;
public int multiply;
}
static void Main(string[] args)
{
int a = 10;
int b = 20;
var result = Add_Multiply(a, b);
Console.WriteLine(result.add);
Console.WriteLine(result.multiply);
}
private static Result Add_Multiply(int a, int b)
{
var result = new Result
{
add = a * b,
multiply = a + b
};
return result;
}
3. টিপল
টুপল ক্লাস
static void Main(string[] args)
{
int a = 10;
int b = 20;
var result = Add_Multiply(a, b);
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
}
private static Tuple<int, int> Add_Multiply(int a, int b)
{
var tuple = new Tuple<int, int>(a + b, a * b);
return tuple;
}
সি # 7 টিপলস
static void Main(string[] args)
{
int a = 10;
int b = 20;
(int a_plus_b, int a_mult_b) = Add_Multiply(a, b);
Console.WriteLine(a_plus_b);
Console.WriteLine(a_mult_b);
}
private static (int a_plus_b, int a_mult_b) Add_Multiply(int a, int b)
{
return(a + b, a * b);
}
আপনি সি # তে এটি করতে পারবেন না। আপনি যা করতে পারেন তা হল একটি out
প্যারামিটার রয়েছে বা আপনার নিজস্ব ক্লাসটি ফেরত দেওয়া (বা স্ট্রাক্ট যদি আপনি এটি অপরিবর্তনীয় হতে চান তবে)।
public int GetDay(DateTime date, out string name)
{
// ...
}
কাস্টম ক্লাস (বা স্ট্রাক্ট) ব্যবহার করে
public DayOfWeek GetDay(DateTime date)
{
// ...
}
public class DayOfWeek
{
public int Day { get; set; }
public string Name { get; set; }
}
async
পদ্ধতি দ্বারা এটি সম্ভব নয় । Tuple
যাবার উপায় (আমি ব্যবহার out
তারা প্রকৃতপক্ষে যাদের ক্ষেত্রে উপযোগী সমলয় অপারেশনে পরামিতি যদিও।)
যদি আপনি একাধিক মান প্রত্যাবর্তন বোঝাতে চান তবে আপনি যে মানগুলি ফিরিয়ে দিতে চান সেগুলি সহ একটি শ্রেণি / কাঠামো দিতে পারেন বা আপনার প্যারামিটারগুলিতে "আউট" কীওয়ার্ডটি ব্যবহার করতে পারেন:
public void Foo(int input, out int output1, out string output2, out string errors) {
// set out parameters inside function
}
আগের পোস্টারটি ঠিক is আপনি একটি সি # পদ্ধতি থেকে একাধিক মান ফেরত দিতে পারবেন না। তবে আপনার কাছে কয়েকটি বিকল্প রয়েছে:
এখানকার সুবিধাগুলি প্রায়শই খুঁজে পাওয়া শক্ত। যদি আপনি কোনও কাঠামো ফিরে পান তবে নিশ্চিত হন এটি ছোট কারণ স্ট্রাক্টগুলি মান ধরণের এবং স্ট্যাকের উপর দিয়ে গেছে। আপনি যদি কোনও শ্রেণীর উদাহরণ ফিরিয়ে দেন তবে এখানে কিছু নকশার নিদর্শন রয়েছে যা আপনি সমস্যা সৃষ্টি করতে এড়াতে ব্যবহার করতে চাইতে পারেন - শ্রেণীর সদস্যদের সংশোধন করা যেতে পারে কারণ সি # রেফারেন্স দ্বারা অবজেক্টগুলি পাস করে (আপনার ভিভিতে আপনার মতো ভিবি নেই )।
অবশেষে আপনি আউটপুট প্যারামিটারগুলি ব্যবহার করতে পারেন তবে আমি যখন আপনি কেবলমাত্র একটি দম্পতি (3 বা তার চেয়ে কম) পরামিতিগুলি ব্যবহার করেন তখন আমি এটির ব্যবহারের পরিস্থিতিগুলিতে সীমাবদ্ধ রাখি - অন্যথায় জিনিসগুলি কুৎসিত এবং বজায় রাখা শক্ত হয়ে যায়। এছাড়াও, আউটপুট প্যারামিটারগুলির ব্যবহার চঞ্চলতার প্রতিবন্ধক হতে পারে কারণ আপনার পদ্ধতির স্বাক্ষরটি প্রতিবার যখন আপনাকে কোনও রিটার্ন ভ্যালুতে যুক্ত করতে হয় তখন কোনও স্ট্রাক্ট বা শ্রেণীর উদাহরণ ফিরিয়ে আপনি মেথড সিগনেচার পরিবর্তন না করে সদস্যদের যুক্ত করতে পারেন change
একটি স্থাপত্য দৃষ্টিকোণ থেকে আমি কী-মান জোড় বা অভিধান ব্যবহার করার বিরুদ্ধে সুপারিশ করব against আমি কোডিংয়ের এই স্টাইলটির পদ্ধতিতে গ্রাসকারী কোডটিতে "গোপন জ্ঞান" প্রয়োজন। কীগুলি কী হতে চলেছে এবং মানগুলির অর্থ কী হবে তা আগেই এটি অবশ্যই জেনে রাখা উচিত এবং যদি অভ্যন্তরীণ বাস্তবায়নে কাজ করা বিকাশকারী অভিধান বা কেভিপি তৈরির পদ্ধতি পরিবর্তন করে তবে এটি সহজেই পুরো অ্যাপ্লিকেশনটিতে ব্যর্থতা ক্যাসকেড তৈরি করতে পারে।
Exception
যে দ্বিতীয় মানটি ফিরিয়ে দিতে চান তা প্রথমটির থেকে বিচ্ছিন্ন হলে আপনি এটিও ফেলে দিতে পারেন: যেমন আপনি যখন একধরনের সফল মান, বা এক ধরণের অসফল মানকে ফিরে আসতে চান।
আপনি হয় কোনও শ্রেণীর উদাহরণ ফেরান বা প্যারামিটার ব্যবহার করেন । আউট প্যারামিটারগুলির উদাহরণ এখানে:
void mymethod(out int param1, out int param2)
{
param1 = 10;
param2 = 20;
}
এটিকে কল করুন:
int i, j;
mymethod(out i, out j);
// i will be 20 and j will be 10
অনেক উপায় আছে; তবে আপনি যদি কোনও নতুন অবজেক্ট বা কাঠামো বা এ জাতীয় কিছু তৈরি করতে না চান তবে আপনি সি # 7.0 এর পরে নীচের মতো করতে পারেন :
(string firstName, string lastName) GetName(string myParameter)
{
var firstName = myParameter;
var lastName = myParameter + " something";
return (firstName, lastName);
}
void DoSomethingWithNames()
{
var (firstName, lastName) = GetName("myname");
}
সি # 7 এ একটি নতুন Tuple
বাক্য গঠন রয়েছে:
static (string foo, int bar) GetTuple()
{
return ("hello", 5);
}
আপনি এটি রেকর্ড হিসাবে ফিরিয়ে দিতে পারেন:
var result = GetTuple();
var foo = result.foo
// foo == "hello"
আপনি নতুন ডিকনস্ট্রাক্টর সিনট্যাক্সও ব্যবহার করতে পারেন:
(string foo) = GetTuple();
// foo == "hello"
তবে ধারাবাহিকতাতে থেকে সতর্ক থাকুন, এই সব অন্বিত চিনি - প্রকৃত কম্পাইল কোডে এই হতে হবে একটি Tuple<string, int>
(যেমন গৃহীত উত্তর প্রতি ) সঙ্গে Item1
এবং Item2
পরিবর্তে foo
এবং bar
। তার মানে সিরিয়ালাইজেশন (বা deserialisation) পরিবর্তে property সম্পত্তিগুলির নাম ব্যবহার করবে।
সুতরাং, সিরিয়ালাইজেশন জন্য একটি রেকর্ড ক্লাস ঘোষণা এবং পরিবর্তে ফিরে।
সি # 7-তে নতুন হ'ল out
প্যারামিটারগুলির জন্য উন্নত বাক্য গঠন । আপনি এখন ইনলাইনটি ঘোষণা করতে পারেন out
, যা কিছু প্রসঙ্গে উপযুক্ত:
if(int.TryParse("123", out int result)) {
// Do something with result
}
তবে, বেশিরভাগ ক্ষেত্রে আপনি নিজের ফাংশনগুলির পরিবর্তে এটি নেট নেট লাইব্রেরিতে ব্যবহার করবেন।
কিছু উত্তর প্যারামিটারগুলি ব্যবহার করার পরামর্শ দেয় তবে আমি এটি ব্যবহার না করার পরামর্শ দিচ্ছি কারণ তারা অ্যাসিঙ্ক পদ্ধতিতে কাজ করে না । দেখুন এই আরও তথ্যের জন্য।
অন্যান্য উত্তরগুলি টিপল ব্যবহার করে বর্ণিত, যা আমি খুব সুপারিশ করব তবে সি # 7.0 তে নতুন বৈশিষ্ট্যটি ব্যবহার করে।
(string, string, string) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
var names = LookupName(id);
WriteLine($"found {names.Item1} {names.Item3}.");
এই কাজ করার বিভিন্ন উপায় আছে। আপনি ref
পরামিতি ব্যবহার করতে পারেন :
int Foo(ref Bar bar) { }
এটি ফাংশনটির একটি রেফারেন্স পাস করে যার মাধ্যমে ফাংশনটিকে কলিং কোডের স্ট্যাকের মধ্যে অবজেক্টটি সংশোধন করতে দেওয়া হয়। যদিও এটি প্রযুক্তিগতভাবে "ফেরত" মান নয় তবে এটি কোনও ফাংশনকে অনুরূপ কিছু করার একটি উপায়। উপরের কোডে ফাংশনটি একটি int
এবং (সম্ভাব্য) পরিবর্তিত করবে bar
।
আর একটি অনুরূপ পদ্ধতির একটি out
পরামিতি ব্যবহার করা হয়। একটি out
প্যারামিটার ref
অতিরিক্ত, সংকলক প্রয়োগকারী বিধি সহ একটি পরামিতিটির সমান । এই নিয়মটি হ'ল যদি আপনি out
কোনও ফাংশনে কোনও প্যারামিটারটি পাস করেন তবে ফিরে আসার আগে সেই ফাংশনটির মান নির্ধারণ করা দরকার। এই নিয়ম ছাড়াও, একটি out
প্যারামিটার প্যারামিটারের মতো কাজ করে ref
।
চূড়ান্ত পদ্ধতির (এবং বেশিরভাগ ক্ষেত্রে সর্বোত্তম) হ'ল এমন একটি প্রকার তৈরি করা যা উভয় মানকেই অন্তর্ভুক্ত করে এবং ফাংশনটিকে ফিরে আসতে দেয়:
class FooBar
{
public int i { get; set; }
public Bar b { get; set; }
}
FooBar Foo(Bar bar) { }
এই চূড়ান্ত পদ্ধতির পড়া এবং বুঝতে সহজ এবং সহজ।
না, আপনি সি # তে কোনও ফাংশন (সি # 7 এর চেয়ে কম সংস্করণের জন্য) থেকে একাধিক মান ফিরিয়ে দিতে পারবেন না, পাইথনে অন্তত আপনি যেভাবে করতে পারবেন তা নয়।
তবে কয়েকটি বিকল্প রয়েছে:
আপনি এটিতে চান এমন একাধিক মান সহ আপনি টাইপের অবজেক্টের অ্যারেটি ফিরিয়ে দিতে পারেন।
private object[] DoSomething()
{
return new [] { 'value1', 'value2', 3 };
}
আপনি out
পরামিতি ব্যবহার করতে পারেন ।
private string DoSomething(out string outparam1, out int outparam2)
{
outparam1 = 'value2';
outparam2 = 3;
return 'value1';
}
সি # 4 এ, আপনি সহজেই এটি পরিচালনা করতে টিউপসগুলিতে অন্তর্নির্মিত সমর্থনটি ব্যবহার করতে সক্ষম হবেন।
এর মধ্যে, দুটি বিকল্প রয়েছে।
প্রথমে, আপনি আপনার পরামিতিগুলিতে মান নির্ধারণের জন্য রেফ বা আউট প্যারামিটার ব্যবহার করতে পারেন, যা কলিং রুটিনে ফিরে আসে।
এটির মতো দেখাচ্ছে:
void myFunction(ref int setMe, out int youMustSetMe);
দ্বিতীয়ত, আপনি আপনার রিটার্নের মানগুলি কোনও কাঠামো বা শ্রেণিতে গুটিয়ে রাখতে পারেন এবং সেগুলি কাঠামোর সদস্য হিসাবে ফিরিয়ে দিতে পারেন। কীভ্যালুপায়ার 2 টির জন্য ভাল কাজ করে - 2 টিরও বেশির জন্য আপনার কাস্টম ক্লাস বা কাঠামো প্রয়োজন।
আপনি এই "কীভ্যালু পেয়ার" চেষ্টা করতে পারেন
private KeyValuePair<int, int> GetNumbers()
{
return new KeyValuePair<int, int>(1, 2);
}
var numbers = GetNumbers();
Console.WriteLine("Output : {0}, {1}",numbers.Key, numbers.Value);
আউটপুট:
আউটপুট: 1, 2
শ্রেণি, কাঠামো, সংগ্রহ এবং অ্যারে একাধিক মান থাকতে পারে। আউটপুট এবং রেফারেন্স পরামিতি এছাড়াও একটি ফাংশনে সেট করা যেতে পারে। একাধিক মান ফিরিয়ে দেওয়া টিউপসগুলির মাধ্যমে গতিময় এবং কার্যকরী ভাষায় সম্ভব, তবে সি # তে নয়।
প্রধানত দুটি পদ্ধতি রয়েছে। ১. আউট / রেফ প্যারামিটারগুলি ব্যবহার করুন ২. বস্তুর একটি অ্যারে ফিরিয়ে দিন
এখানে বেসিক Two
পদ্ধতি:
1) out
প্যারামিটার হিসাবে ' ' ব্যবহার করুন
ব্যবহার আপনি 4.0 এবং ছোট উভয় সংস্করণের জন্যও 'আউট' ব্যবহার করতে পারেন।
'আউট' এর উদাহরণ:
using System;
namespace out_parameter
{
class Program
{
//Accept two input parameter and returns two out value
public static void rect(int len, int width, out int area, out int perimeter)
{
area = len * width;
perimeter = 2 * (len + width);
}
static void Main(string[] args)
{
int area, perimeter;
// passing two parameter and getting two returning value
Program.rect(5, 4, out area, out perimeter);
Console.WriteLine("Area of Rectangle is {0}\t",area);
Console.WriteLine("Perimeter of Rectangle is {0}\t", perimeter);
Console.ReadLine();
}
}
}
আউটপুট:
আয়তক্ষেত্রের ক্ষেত্রফল 20
আয়তক্ষেত্রের পরিধি 18
* দ্রষ্টব্য: * out
-শব্দটি এমন পরামিতিগুলি বর্ণনা করে যার প্রকৃত পরিবর্তনশীল অবস্থানগুলি কল করা পদ্ধতির স্ট্যাকের অনুলিপি করা হয়েছে, যেখানে সেই একই অবস্থানগুলি পুনরায় লেখা যেতে পারে। এর অর্থ হ'ল কলিং পদ্ধতিটি পরিবর্তিত প্যারামিটারটি অ্যাক্সেস করবে।
2) Tuple<T>
টিপলের উদাহরণ:
একাধিক ডেটা টাইপ মান ব্যবহার করে ফিরিয়ে দেওয়া Tuple<T>
using System;
class Program
{
static void Main()
{
// Create four-item tuple; use var implicit type.
var tuple = new Tuple<string, string[], int, int[]>("perl",
new string[] { "java", "c#" },
1,
new int[] { 2, 3 });
// Pass tuple as argument.
M(tuple);
}
static void M(Tuple<string, string[], int, int[]> tuple)
{
// Evaluate the tuple's items.
Console.WriteLine(tuple.Item1);
foreach (string value in tuple.Item2)
{
Console.WriteLine(value);
}
Console.WriteLine(tuple.Item3);
foreach (int value in tuple.Item4)
{
Console.WriteLine(value);
}
}
}
আউটপুট
perl
java
c#
1
2
3
দ্রষ্টব্য: টুপলের ব্যবহার ফ্রেমওয়ার্ক ৪.০ এবং এর থেকে উপরে কার্যকর । Tuple
প্রকার a class
। এটি মেমোরিতে পরিচালিত হিপগুলিতে পৃথক স্থানে বরাদ্দ করা হবে। আপনি একবার এটি তৈরি করলে আপনি Tuple
এর মান পরিবর্তন করতে পারবেন না fields
। এটি Tuple
আরও একটি মত করে তোলে struct
।
একটি প্রতিনিধি গ্রহণ করার পদ্ধতি কলকারীকে একাধিক মান সরবরাহ করতে পারে। এটি আমার উত্তর থেকে এখানে ধার করে এবং হাদাসের গৃহীত উত্তর থেকে কিছুটা ব্যবহার করে ।
delegate void ValuesDelegate(int upVotes, int comments);
void GetMultipleValues(ValuesDelegate callback)
{
callback(1, 2);
}
কলকারীরা একটি ল্যাম্বদা (বা একটি নামযুক্ত ফাংশন) সরবরাহ করে এবং ইন্টেলিজেন্স প্রতিনিধি থেকে পরিবর্তনশীল নামগুলি অনুলিপি করে সহায়তা করে।
GetMultipleValues((upVotes, comments) =>
{
Console.WriteLine($"This post has {upVotes} Up Votes and {comments} Comments.");
});
কেবল ওওপি পদ্ধতিতে এই জাতীয় ক্লাস ব্যবহার করুন:
class div
{
public int remainder;
public int quotient(int dividend, int divisor)
{
remainder = ...;
return ...;
}
}
ফাংশন সদস্য সেই ভাগফলটি ফিরিয়ে দেয় যা বেশিরভাগ কলাররা প্রাথমিকভাবে আগ্রহী Additionally
এইভাবে আপনার অনেক অতিরিক্ত "রিটার্ন মান" থাকতে পারে, যদি আপনি ডাটাবেস বা নেটওয়ার্কিং কলগুলি প্রয়োগ করেন, যেখানে প্রচুর ত্রুটি বার্তাগুলির প্রয়োজন হতে পারে তবে কেবল ত্রুটি দেখা দিলে।
আমি এই সমাধানটি সি ++ প্রশ্নের মধ্যেও লিখেছি যা ওপি উল্লেখ করছে।
সি # এর ভবিষ্যত সংস্করণে নামযুক্ত টিপলস অন্তর্ভুক্ত হতে চলেছে। ডেমোটির জন্য এই চ্যানেল 9 সেশনটি দেখুন https://channel9.msdn.com/Events/Build/2016/B889
টিপল স্টাফের জন্য 13:00 এ যান। এটি এই জাতীয় জিনিসগুলিকে অনুমতি দেবে:
(int sum, int count) Tally(IEnumerable<int> list)
{
// calculate stuff here
return (0,0)
}
int resultsum = Tally(numbers).sum
(ভিডিও থেকে অসম্পূর্ণ উদাহরণ)
আপনি একটি গতিশীল অবজেক্ট ব্যবহার করতে পারেন। আমি মনে করি এটি টিপলের চেয়ে আরও ভাল পঠনযোগ্যতা রয়েছে।
static void Main(string[] args){
var obj = GetMultipleValues();
Console.WriteLine(obj.Id);
Console.WriteLine(obj.Name);
}
private static dynamic GetMultipleValues() {
dynamic temp = new System.Dynamic.ExpandoObject();
temp.Id = 123;
temp.Name = "Lorem Ipsum";
return temp;
}
এটি করার উপায়:
1) কীভ্যালিউপায়ার (সেরা পারফরম্যান্স - 0.32 এনএস):
KeyValuePair<int, int> Location(int p_1, int p_2, int p_3, int p_4)
{
return new KeyValuePair<int,int>(p_2 - p_1, p_4-p_3);
}
2) টিপল - 5.40 এনএস:
Tuple<int, int> Location(int p_1, int p_2, int p_3, int p_4)
{
return new Tuple<int, int>(p_2 - p_1, p_4-p_3);
}
3) আউট (1.64 এনএস) বা রেফ 4) আপনার নিজস্ব কাস্টম ক্লাস / স্ট্রাক্ট তৈরি করুন
ns -> ন্যানোসেকেন্ডস
রেফারেন্স: একাধিক-রিটার্ন-মান ।
আপনি এটি চেষ্টা করতে পারেন
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
yield return "value1"; yield return "value2";
স্পষ্টভাবে একটি নতুন তৈরি করতে হবে না হিসাবে ব্যবহার করবেন না string[]
?
আপনি একটি অপারেশন রেজাল্টও ব্যবহার করতে পারেন
public OperationResult DoesSomething(int number1, int number2)
{
// Your Code
var returnValue1 = "return Value 1";
var returnValue2 = "return Value 2";
var operationResult = new OperationResult(returnValue1, returnValue2);
return operationResult;
}
অ্যারের ধরণের রিটার্নগুলির জন্য বিশেষভাবে একটি দ্রুত উত্তর:
private int[] SumAndSub(int A, int B)
{
return new[] { A + B, A - B };
}
ব্যবহার:
var results = SumAndSub(20, 5);
int sum = results[0];
int sub = results[1];