Код, который вы отправили, не наследуется ни от одного класса. Он реализует некоторые так называемые интерфейсы. Как перевести этот фрагмент: «Я гарантирую, что SomeClass будет сравнимым и равнозначным с другими экземплярами SomeClass. Я дам определения в этом классе о том, как это сделать».
О специализирующаяся класса из другого класса ... Что вы можете сделать что-то вроде этого:
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Pet
{
protected string name;
public Pet(String name)
{
this.name = name;
}
}
class Dog : Pet
{
private List<String> tricks;
public Dog(String name, List<String> tricks):base(name)
{
this.tricks = tricks;
}
}
class Program
{
static void Main(string[] args)
{
List<string> tricks = new List<string>();
tricks.Add("sit");
tricks.Add("jump");
tricks.Add("bark");
Dog puppy = new Dog("Fido", tricks);
}
}
}
собака наследует от Pet. Собака вызывает конструктор Петра при создании. Независимо от имени, которое вы передаете в конструктор Dog, он отправит его в конструктор Pet. Поскольку происходит то, что подкласс сначала вызывает конструктор своего суперкласса с соответствующими аргументами. Затем он запускает собственный конструктор. Все, что объявлено публичным или защищенным в классе, будет видимым для его подклассов.
Поэтому собака будет иметь имя, а также список трюков:
Вы достичь такой точки зрения с окном «Locals».
Я рекомендую вам прочитать некоторые учебники по C# inheritance, interfaces и generics
Это просто означает, что 'SomeClass' будет реализовывать методы' IComparable' и 'IEquatable', которые используют' SomeClass' как тип в своей сигнатуре. В частности, 'int CompareTo (SomeClass)' и 'bool Equals (SomeClass)' – juharr
https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern – sstan