我是C#的新手,我想我看到了两种不同的方法来做同样的事情,或者我只是不理解。我的《穆拉赫的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);
网上的一些消息来源似乎是这样做的,而其他消息来源则是另一种方式,或者就像我说的。。。也许我只是错过了什么。
在使用变量之前必须声明变量(一次(,但可以多次分配声明的对象变量。
// declare the variable
Product product1
// assign to first product
product1 = new Product("first product");
// assign to a different product
product1 = new Product("second product");
您可以使用声明和赋值为"简写"的技术,这样您就可以组合前两行代码(不计算注释(:
//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");
第一部分
当您需要访问范围之外的变量时,首选第一种样式,比如如果您只需要在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循环内部执行