Сколько классы, которые вы можете наследовать в C #?

Вы можете сделать это с помощью одной команды awk

awk -F"[<>]" '/resource-name/ && !seen[$3]++ { print $3 } ' test.xml

с вашим примером XML-файла

$ awk -F"[<>]" '/resource-name/ && !seen[$3]++ { print $3 } ' test.xml
CAC040F
CAD040F
CAE040F

$
23
задан Peter Mortensen 31 August 2012 в 19:55
поделиться

8 ответов

C# не поддерживает множественное наследование (это означает, что один класс наследуется от нескольких классов). Однако вы можете реализовать несколько интерфейсов в одном классе.

Что касается объединения унаследованных классов, ограничений как таковых нет. Просто имейте в виду сложность, которую вы внесете в свою систему. При использовании наследования убедитесь, что вы используете его в сценарии «является». Чита - это животное. Мазда это машина. В противном случае ваше наследование тесно связывает ваши классы с дизайном, который становится намного сложнее поддерживать.

Если это статические «служебные» методы, просто вызывайте их напрямую, без наследования. Если эти методы не принадлежат создаваемому вами объекту, вам не следует использовать наследование.

34
ответ дан 29 November 2019 в 00:50
поделиться

Вы не можете сделать множественное наследование в C #.

Вы можете достичь тех же целей, используя интерфейсы, если бы не тот факт, что вы хотели бы использовать статические методы.

7
ответ дан 29 November 2019 в 00:50
поделиться

До тех пор, пока методы доступа установлены соответствующим образом, статические методы в любом случае более или менее совместно используются (фактически они используют ключевое слово Shared в VB); не имеет значения, в каком классе они находятся, потому что они не связаны ни с одним экземпляром объекта.

Чтобы вызвать статический метод, вы должны предварять его именем класса, в котором он объявлен:

MyClass.MyUtilityMethod();

Метод доступа должен быть public или может быть internal, если вызывающая сторона и метод находятся в одном проекте / сборке.

Если ваша цель - просто создать единую точку доступа для статических методов, вы создаете класс, который перенаправляет вызовы соответствующим образом:

public static class SharedMethods
{
    public static void SharedMethod1()
    {
        ClassA.SharedMethod1();
    }

    public static string GetName()
    {
        return NameProvider.GetName();
    }

    public static int GetCount()
    {
        return CountClass.GetCount();
    }
}

Таким образом, вы можете получить доступ ко всему через SharedMethods.GetName() и т.д.

3
ответ дан 29 November 2019 в 00:50
поделиться

Вы не можете наследовать от нескольких классов. Однако вы можете связать воедино классы, которые наследуются друг от друга.

Class Employee

Class Manager: Employee

class RegionalDirector: Manager

Так что если у вас есть целая схема именования / идентификатора сотрудника / контактной информации, действующая в вашей программе Вы можете унаследовать это от сотрудника. Затем уточните информацию для менеджера, а затем еще больше информации для регионального директора.

2
ответ дан 29 November 2019 в 00:50
поделиться

Вы можете наследовать только от одного класса. Однако можно реализовать несколько интерфейсов.

15
ответ дан 29 November 2019 в 00:50
поделиться

Допустим, у вас есть Utils.cs:

internal class Utils {
    public static void Log(string str) {
        // log str to a file...
    }
}

и есть DB.cs, который использует метод Log и находится в том же пространстве имен, что и класс Utils:

public class DB {
    public void SaveToDB() {
        // some db operations
        Utils.Log("DB operation successful");
    }
}

Since Log method: является статическим, вам не нужно инициализировать класс Utils, чтобы использовать этот метод.

В заключение, вы не можете использовать множественное наследование, но в вашем случае это также не нужно. Вы можете использовать статические методы без множественного наследования.

9
ответ дан 29 November 2019 в 00:50
поделиться

Вы можете наследовать в "цепочке" сколько угодно классов, но множественное наследование не допускается в языках .NET.

Единственным вариантом множественного наследования в .NET являются интерфейсы.

3
ответ дан 29 November 2019 в 00:50
поделиться

В .NET можно наследовать только один базовый класс, но реализовать несколько интерфейсов.

Для конкретной ситуации ASP.NET, в которой вы находитесь, вы можете сделать следующее:

public class BasePage : Page
{
    public string SomeMethod() { //Magic happens here }
}

и ваши веб-формы наследуются от BasePage в отделенном коде.

Другим часто используемым способом является создание пользовательского статического класса, в котором есть все статические методы. Если вы работаете со специфическими вещами ASP.NET, обязательно добавьте к ним префикс HttpContext.Current.

Например:

public static class HelperClass
{
    public static string GetUsernameFromSession()
    {
        return HttpContext.Current.Session["Username"].ToString();
    }
}
2
ответ дан 29 November 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: