上周,我做了一次代码采访。
我的采访者说: “你喜欢什么
var byteArray = myFunction();
and
byte[] Array = myFunction();" ?
我回答说,一旦编译,这些行给出了相同的结果。
我的采访者说:“是的,但是它们并没有以同样的方式进行处理:var byteArray更好,因为GC快速吞噬变量。”
我非常惊讶的是,编译后给出相同结果的两行代码没有以相同的方式进行,但也许我错了。
所以:他们是否以同样的方式受到伤害?如果没有,你能解释一下为什么吗?
答案 0 :(得分:6)
是的,他们以同样的方式收集垃圾。相同的类型,相同的行为。这是一个编译器功能:一旦编译完成,没有什么能使一个代码与另一个代码不同。
答案 1 :(得分:4)
它们完全相同,假设没有隐含转换为byte[]
。他们没有办法让他们与众不同,因为var
只是语法糖被正确的类型取代。
答案 2 :(得分:4)
你的面试官不正确。
在您的特定情况下,var
代表byte[]
。代码是等效的。
也许你的面试官错误地认为第一种情况在某种意义上会产生一个对象,但第二种情况会产生几种情况。当然是Hogwash。