回答:
それは次のように簡単です:
num1 = num2 = 5;
変数の代わりにオブジェクトプロパティを使用する場合get、中間値のアクセサーが呼び出されないことを知っておくことは興味深いです。set割り当てシーケンスでアクセスされるすべてのプロパティに対して、アクセサのみが呼び出されます。
たとえば、getおよびsetアクセサが呼び出されるたびにコンソールに書き込むクラスを考えてみましょう。
static void Main(string[] args)
{
var accessorSource = new AccessorTest(5);
var accessor1 = new AccessorTest();
var accessor2 = new AccessorTest();
accessor1.Value = accessor2.Value = accessorSource.Value;
Console.ReadLine();
}
public class AccessorTest
{
public AccessorTest(int value = default(int))
{
_Value = value;
}
private int _Value;
public int Value
{
get
{
Console.WriteLine("AccessorTest.Value.get {0}", _Value);
return _Value;
}
set
{
Console.WriteLine("AccessorTest.Value.set {0}", value);
_Value = value;
}
}
}
これは出力されます
AccessorTest.Value.get 5
AccessorTest.Value.set 5
AccessorTest.Value.set 5
つまり、コンパイラはすべてのプロパティに値を割り当て、値が割り当てられるたびに値を再度読み取ることはありません。
Console.WriteLine(num = 5);。(免責事項:私はまだです)
num1 = num2 = 5ますか?より多くの変数が関係している場合、コードは読み取り不可能になりますか?ハイジャックして申し訳ありません。それだけで新しい投稿を作成したくありませんでした。
これはあなたが望むことでしょう:
int num1, num2;
num1 = num2 = 5;
'num2 = 5'割り当ては、割り当てられた値を返します。
これによりnum1 = (num2 = 5) +3;、num1に8を割り当てるようなクレイジーなことを行うことができますが、あまり読みにくいため、これを行うことはお勧めしません。
int num1=5,num2=5
同じステートメントで変数を宣言して割り当てる。
string a = "really long string", b = "really long string";
構文が少し短いが、他の人がすでに述べていることを理解する。
int num1, num2 = num1 = 1;
これを試して:
num1 = num2 = 5;
これはVBでは機能しないことに注意してください。
=では、代入と等価の両方に使用されるため、num1 = num2 = 5「5がnum2変数と等しいかどうかのブール結果を代入する」という意味になりますnum1。=演算子にはこれらの2つの意味があるため、この構文を表す方法はありません。最善の方法は、いくつかのパラメーターbyrefと値を取り込んで、すべてのパラメーターをその値に割り当てる関数を作成することです。
num1 = (num2 = 5)です。実行された最初の割り当て(num2 = 5)は、値5を外界に返します。外界は、num1に割り当てられます。これは無限に機能します(num0 = num1 = num2 = 5)。