C# 在另一个类属性中使用类名。?

C# 在另一个类属性中使用类名。?,c#,C#,我对C#还很陌生。我有两门课,一门是电影课,一门是流派课。我不明白“公共虚拟流派”这个属性。有人能给我解释一下吗?下面是两门课 public class Genre :IEntityBase { public Genre() { Movies = new List<Movie>(); } public int ID { get; set; } public string Name { get; set; } pub

我对C#还很陌生。我有两门课,一门是电影课,一门是流派课。我不明白“公共虚拟流派”这个属性。有人能给我解释一下吗?下面是两门课

 public class Genre :IEntityBase
{
    public Genre()
    {
        Movies = new List<Movie>();
    }
    public int ID { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<Movie> Movies { get; set; }
}


public class Movie:IEntityBase
{
     public Movie() 
     {                                                          
         Stocks = new List<Stock>(); 
     }
     public int ID { get; set; }          
     **public virtual Genre Genre { get; set; }** 
     public virtual ICollection<Stock> Stocks { get; set; }
}
公共类体裁:IEntityBase
{
公共体裁()
{
电影=新列表();
}
公共int ID{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection电影{get;set;}
}
公共类电影:IEntityBase
{
公共电影()
{                                                          
股票=新名单();
}
公共int ID{get;set;}
**公共虚拟类型{get;set;}**
公共虚拟ICollection存储{get;set;}
}
类型和名称是性别,这在您看来可能会让人困惑,但在计算机上是这样的:

一堆修饰符,如public、private等+类型+名称

所以它实际上不把第二性别看成是一种类型,因为它只是一个东西的名字。实际上,它并不是指你用名字创建的变量/属性。它使用某种指针或引用

现在,如果你想问如何解释这个特定的定义,它说属性应该在类之外被看到(它不是隐藏的/私有的)。如果使用继承,也可以改变其含义。它将返回类型为Gender(类)的东西,它的名称是Gender(如果您愿意,它几乎可以被称为任何名称)。它还说,它将作为一个容器,用于存储类似于性别的值,您可以自由地分配和阅读它


大多数细节都很重要,当您开始在更大范围内使用它的实例时,可以看到它们来修改行为。就在这个例子中,你是公开还是虚拟都没有区别。它有用吗?

公共虚拟类型{get;set;}的意思如下:

  • 声明名为
    Genre
    (第二次出现)的属性
  • 此属性的类型为
    类型
    (第一次出现)
  • 此属性可以读取(
    get
    ),也可以更改(
    set
  • 此属性可由具有此对象访问权限的任何其他库中的任何其他类读取或设置(
    public
  • 此属性可以被子类重写(替换其代码以执行其他操作)。(
    virtual

  • 另外,请看这个问题(您的课程看起来像EF模型):非常感谢您Codrant Hank U Konrad。这确实有帮助:)