コントロールを渡す動作の参照の種類に参照を渡すことはできますか?
コントロールをコンストラクターに渡すと、実際にはそのコントロールへの参照が渡され、そのコントロールに別のコントロールを割り当てると、値をコピーするのではなく、実際に参照自体をコピーしていることに気付きました! 通常の変数、または少なくとも ref キーワードではこれを実現できないのはなぜですか?
例えば...
public class Test : Form
{
Test()
{
InitializeComponent();
}
Test_Load(object sender, EventArgs e)
{
new Test2((Control)MyTextBox).ShowDialog();
}
}
public class Test2 : Form
{
Public Control x_
Test2(Control x)
{
x_=x;
InitializeComponent();
}
//use x_ somewhere in code to actually change x
}
私が理解していないのは、これはコントロールでは機能しますが、他の変数では機能しないということです。ここで、x を int ref として渡したとします。ref 自体を x_ に渡す方法はありませんか? コントロールの場合、正確にこれがどのように発生するかについて私を混乱させる ref を使用する必要さえありません...メソッドと親/所有者を介して変数を前後に渡す方法を知っているので、私の質問はこれに非常に固有です特定の準ポインタ。たぶん、私は Control を渡す方法を誤解しています。この場合、int を Control とまったく同じように構造化して、int を Control のような int に割り当てると、元の Control を変更するのと同じように元の int を変更します。 .
これは機能します。送信は送信するのと同じです。
new InputBox(((Label)sender)).ShowDialog();
Label Send;
public InputBox(Label send)
{
Send=send;
}
私はこれが同じように機能することを望みます。Send は send と同じになりましたが、まったく同じではありません。
new InputBox(((string)sender)).ShowDialog();
string Send;
public InputBox(string send)
{
Send=send;
}
クラス間で変数を渡す方法などは知っていますが、渡されたときに Label が動作するのと同じように文字列を動作させるように具体的に求めています。渡されると、変数をその変数の同じインスタンスと等しくすることができるという意味で、ポインターとまったく同じように渡されます。その文字列の同じインスタンスと等しい文字列を作成できないのはなぜですか?