Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么对象初始值设定项不';是否不使用变量访问字段或属性?_C# - Fatal编程技术网

C# 为什么对象初始值设定项不';是否不使用变量访问字段或属性?

C# 为什么对象初始值设定项不';是否不使用变量访问字段或属性?,c#,C#,我是C#的初学者,我想问一个如上所述的例子。 在初始化字段年龄和属性名称时,为什么不按如下方式编写语句: class Cat { public int Age { get; set; } public string Name { get; set; } } Cat cat = new Cat { Age = 10, Name = "Fluffy" }; Cat cat = new Cat { cat.Age = 10, cat.Name = "Fluffy" }; 另一个问

我是C#的初学者,我想问一个如上所述的例子。
在初始化字段年龄和属性名称时,为什么不按如下方式编写语句:

class Cat
{
    public int Age { get; set; }
    public string Name { get; set; }
}

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Cat cat = new Cat { cat.Age = 10, cat.Name = "Fluffy" };
另一个问题:当我们声明一个方法时,如果类Cat还没有执行实例化,为什么变量可以直接访问属性,如下所示:

class Cat
{
    public int Age { get; set; }
    public string Name { get; set; }
}

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Cat cat = new Cat { cat.Age = 10, cat.Name = "Fluffy" };

因为
cat
尚未初始化;因此,您无法访问它。而且,即使你可以,也没有意义。您正在初始化该实例。无需指定要初始化的实例。这将导致进一步的混乱,因为人们可能期望能够写出:

static void CatAge(Cat cat) 
    {
        cat.Age = 12;
    }


class Cat
{

  public int Age
    {
        get;
        set;
    }

因为
cat
尚未初始化;因此,您无法访问它。而且,即使你可以,也没有意义。您正在初始化该实例。无需指定要初始化的实例。这将导致进一步的混乱,因为人们可能期望能够写出:

static void CatAge(Cat cat) 
    {
        cat.Age = 12;
    }


class Cat
{

  public int Age
    {
        get;
        set;
    }

第一个是罗伯的回答。第二,在编写代码时,Cat类包含Age属性,因此编辑器允许访问您的属性


它将在运行时尝试分配12。如果为空,它将抛出异常,否则它将允许。

首先由Rob回答。第二,在编写代码时,Cat类包含Age属性,因此编辑器允许访问您的属性


它将在运行时尝试分配12。如果其为null,它将抛出异常,否则它将允许。

在构造函数中,cat尚未初始化。在构造函数中,cat尚未初始化。