微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么C#中不存在吊装?

我每天都使用 Javascript和C#,有时我不得不考虑使用Javascript时提升.但是,C#似乎没有实现提升(我知道),我无法弄清楚为什么.它更像是一种设计选择还是更类似于适用于所有静态类型语言的安全性或语言约束?

为了记录,我不是说我希望它存在于C#中.我只是想明白为什么不这样做.

编辑:当我在LINQ查询后声明变量时,我注意到了这个问题,但LINQ查询被推迟到变量声明之后.

var results = From c In db.LoanPricingNoFee Where c.LoanTerm == LoanTerm
                   && c.LoanAdvance <= UpperLimit Select c
                   Order By c.LoanInstalment Ascending;

    Int LoanTerm = 12;

引发错误,而:

int LoanTerm = 12;

    var results = From c In db.LoanPricingNoFee Where c.LoanTerm == LoanTerm
                   && c.LoanAdvance <= UpperLimit Select c
                   Order By c.LoanInstalment Ascending;

才不是.

解决方法

“它更像是一种设计选择还是更类似于适用于所有静态类型语言的安全性或语言约束?”

这不是静态类型的约束.编译器将所有变量声明移动到作用域的顶部(在Javascript中这是函数的顶部,在C#中是当前块的顶部)并且如果使用不同类型声明名称时出错将是微不足道的.

因此,C#中不存在提升的原因纯粹是一种设计决策.为什么它的设计方式我不能说我不在团队中.但这可能是由于解析的简易性(对于人类程序员和编译器)如果变量总是在使用前声明.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐