hkhalaj
جمعه 22 آذر 1392, 08:47 صبح
سلام. کاربرد ارسال مقدار با ref و out چه فرقی با هم دارن و از کجا باید بفهمیم باید حتما استفاده بشن؟
مثلا توی برنامه زیر اگر از ref و out استفاده نشه چه اتفاقی میفته؟
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace refout
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Enter x";
label2.Text = "Enter y";
label3.AutoSize = true;
label3.ResetText();
}
private void change_Click(object sender, EventArgs e)
{
refout temp = new refout();
int x = System.Convert.ToInt32(textBox1.Text, 10);
int y = System.Convert.ToInt32(textBox2.Text, 10);
temp.swap(ref x, ref y);
textBox1.Text=x.ToString();
textBox2.Text=y.ToString();
}
private void exit_Click(object sender, EventArgs e)
{
Close();
}
private void rand_Click(object sender, EventArgs e)
{
refout temp = new refout();
int x;
temp.rand(out x);
label3.Text = "Out is " + x.ToString();
}
}
}
مثلا توی برنامه زیر اگر از ref و out استفاده نشه چه اتفاقی میفته؟
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace refout
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Enter x";
label2.Text = "Enter y";
label3.AutoSize = true;
label3.ResetText();
}
private void change_Click(object sender, EventArgs e)
{
refout temp = new refout();
int x = System.Convert.ToInt32(textBox1.Text, 10);
int y = System.Convert.ToInt32(textBox2.Text, 10);
temp.swap(ref x, ref y);
textBox1.Text=x.ToString();
textBox2.Text=y.ToString();
}
private void exit_Click(object sender, EventArgs e)
{
Close();
}
private void rand_Click(object sender, EventArgs e)
{
refout temp = new refout();
int x;
temp.rand(out x);
label3.Text = "Out is " + x.ToString();
}
}
}