C# Object Instantiation 格式问题声明变量还是不声明变量

C# Object Intantiation format question declaring a variable vs not declaring a variable

我是 C# 的新手,我认为我看到了 2 种不同的方法来做同样的事情,或者我可能只是不理解。我的 "Murach's C# 2015" 书在第 369 页有一个创建 2 个对象实例的示例,如下所示:

Product product1, product2;
product1 = new Product("something", "something else", more stuff);
product2 = new Product("something different", "something else different", more different stuff);

你也可以这样做吗?

Product product1 = new Product("something", "something else", more stuff);
Product product2 = new Product("something different", "something else different", more different stuff);

似乎有些在线资源以一种方式进行,而其他来源以另一种方式进行,或者像我说的那样......也许我只是遗漏了一些东西。

第一部分

当您需要访问作用域外的变量时,首选第一种样式让我们说 如果您只需要在 if 条件内实例化您的对象,并且您还需要在 if 条件外访问对象,那么您可以这样做


Product product1;

if(condition == true)
{
    product1 = new Product("something", "something else", more stuff);
}

product1.isInitiated = true 

这里只有第一种类型的初始化会起作用,因为如果条件

我们需要在外部访问它

第二部分

现在,如果您只需要在 if 循环中访问 属性,那么第二种方法也可以使用

if(condition == true)
{
    Product product1 = new Product("something", "something else", more stuff);
    product1.isInitiated = true 
}


在这种情况下,您可以选择在同一点进行实例化和初始化,或者在 if loop

内部进行

您必须在使用变量之前(一次)声明它,但您可以多次分配声明的对象变量。

// declare the variable
Product product1 
// assign to first product
product1 = new Product("first product");
// assign to a different product
product1 = new Product("second product");

你可以像"shorthand"一样使用声明和赋值的技巧,这样你就可以合并前两行代码(不算注释):

//declare and assign the variable in one step
Product product1 = new Product("first product");
//re-assign the previously declared variable to a different object
product1 = new Product("second product");

你只声明了一次变量,所以这会给你一个错误:

Product product1 = new Product("first product");
Product product1 = new Product("second product");