The field switches type: public class Foo { double x = 0 } becomes class Foo { var x=0 } which is an integer. Also public class Foo { double x = 0.0 } becomes class Foo { var x = 0. } which is not valid syntax