必要なのは基本的に変数へのポインタです。int
「値型」(またはのようなstruct
)、参照、およびポインターの違いを説明するのは難しいです。私はCを学ぶことをお勧めすることしかできません。
これが機能するソリューションですが、コードに多くの変更が必要になる場合があります。
//a class that will hold an int inside
public class myIntWrapper
{
//this is the value wrapper holds
public int theValue;
//constructor taking the value
public myIntWrapper(int argument)
{
theValue = argument;
}
//operator to convert an int into brand-new myIntWrapper class
public static implicit operator myIntWrapper(int argument)
{
return new myIntWrapper(argument);
}
//operator to convert a myIntWrapper class into an int
public static implicit operator int(myIntWrapper wrapper)
{
return wrapper.theValue;
}
}
今、あなたは書くことができます:
//create an array -
//setting values to every item in array works
//thanks to operator myIntWrapper(int argument)
myIntWrapper[] myArray = new myIntWrapper[5]{1,2,3,4,5};
//now take a "reference"
myIntWrapper rr = myArray[1];
//change the value
rr.theValue = 500;
//from now on myArray[1].theValue is 500;
//thanks to operator int(myIntWrapper wrapper)
//you can write:
int ss = rr;//it works!
絶対にしないでください。
rr = 600;
これにより、実際にはまったく新しいmyIntWrapperが作成され、どこにも「接続」されません。覚えておいてください:
rr.theValue = 500;//this changes the value somewhere
rr = myArray[3];//this changes where rr is "pointing" to
はい、それは非常に複雑ですが、安全でないコードなしでもっと簡単にできるとは思えません。これ以上説明しなくてすみません。コメントですべての質問に答えます。