C#では、x=yと書いた場合、その戻り値はyになるそうです。
それでwhile((x=y) != null)なんて書き方ができるんですね。
なるほど。