c# Class 类型声明说了什么?

What does the c# Class type declaration say?

Class ObjName = new Class();


这个问题与我翻阅如下定义有关:

public class Thing{
// Stuff
}
public class Animal:Thing{
// Stuff
}

后跟此声明Thing x = new Animal();

相关问题:第一个classdefinition/type与第二个(new关键字之后)有什么关系?

Link to the related article, by: Matthew Cochran

这个 Class ObjName = new Class(); 创建一个 Class 类型的对象调用默认构造函数并将指向此对象的引用分配给变量 objName.

此外,此 Thing x = new Animal(); 做完全相同的事情(它创建一个对象并将对该对象的引用分配给一个变量)。但是,这里有一个细微的差别Animal 对象是 Thing 对象。也就是说,Animal继承了Thing。因此可以将对 Animal 对象的引用分配给类型为 Thing.

的变量

Here 是很好的继承 link。

如果我猜对了你的意思...

public class Thing{
}
public class Animal:Thing{
}

这是说 class Animal 派生自 class Thing。 (动物:事物)。所以如果你多填一点...

public class Thing{
  void DoStuff()
  {
     Console.Write("Doing Stuff");
  }
}
public class Animal:Thing{

}

你可以这样做...

var ani = new Animal();
ani.DoStuff();

因为Inheritance

编辑:为了您在所用术语中的利益,因为它们对于初学者(和专家)来说可能已经足够困难了,这将是一个 class 定义

public class Thing
{
  void DoStuff()
  {
    Console.Write("Doing Stuff");
  }
}

这将是一个变量声明(这在今天不像几年前那么普遍,至少在 c# 和相关语言中是这样)

Thing x;

这些是变量声明和赋值 - 也称为 "instantiation",因为我们正在创建 class 定义的实例。在此处使用 var 是一个很好的快捷方式,除非有令人信服的理由,否则您应该考虑使用它而不是在左侧指定类型。

var x = new Animal();
var y = new Thing();