gpt4 book ai didi

c# - 声明局部变量

转载 作者:行者123 更新时间:2023-12-02 04:32:09 26 4
gpt4 key购买 nike

如果问题是基于意见,请提前致歉。在 C# 中声明局部变量时,为什么要选择以下三个变体中的第一个变体?

var list1 = new List();
List list2 = null;

var list1 = new List();
var list2 = (List)null;

// this variant would allow easy refactoring from class to struct 
var list1 = new List();
var list2 = default(List);

虽然这是不可能的:

var list1 = new List(), list2 = null;

已编辑以提供上下文:

void DoSomething(Action action) { /* ... */ }
// ..

var list1 = new List();
List list2 = null;
// ...
DoSomething(() => { list2 = new List(); list2.Add(1); });

最佳答案

var 更短,有些人更喜欢它而不是显式指定类型。在匿名类型的上下文中,除了使用 var 之外,您别无选择,例如

var point = new { X = 1, Y = 2 }

var 只是语法糖。不指定类型并不意味着它是动态的。它仅意味着编译器将根据使用情况推断类型。最终编译出来的代码是一样的。

在我们的团队中,当右侧是以下之一时,我们有一个在左侧使用 var 的标准:

  1. 新对象构造
  2. Actor
  3. 匿名

在所有其他情况下,我们的内部标准不允许 var 因为在其他情况下,读者可能无法明确了解变量类型(即使编译器知道)。例如,如果您有这样的语句:

var x = SomeMethod();

x 的类型是什么?编译器知道,因为它知道 SomeMethod() 返回什么。你还记得副手吗?您还记得应用程序中的每个方法吗?我们发现在这些情况下不使用 var 更具表现力。

对于 null 值,我总是指定类型。强制类型转换之类的看起来只是一种奇怪的机制,允许您使用 var ,而实际上它并没有给您带来任何好处。

List list = null;

关于c# - 声明局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22799556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com