2015-10-08 4 views
4

Предположим, я создал простой класс.Определите новую арифметическую операцию в C#

class Zoo { 
    public int lionCount; 
    public int cheetahCount; 
    Zoo(lions, cheetahs) { 
    lionCount = lions; 
    cheetahCount = cheetahs; 
    } 
} 

Теперь предположим, что у меня есть 2 зоопарка.

Zoo zoo1 = new Zoo(1,2); 
Zoo zoo2 = new Zoo(3,5); 

Можно ли определить арифметическую операцию для этого класса, так что ...

Zoo zoo3 = zoo1 + zoo2; //makes a zoo with 4 lions and 7 cheetahs 
Zoo zoo4 = zoo1 * zoo2; // makes a zoo with 3 lions and 10 cheetahs 

Другими словами, как я могу определить пользовательские арифметические операции для C# класса?

+0

Звучит как метод расширения, чтобы перегрузить оператор +, когда два объекта typeof (Zoo)? –

+4

@gwilliams Нет, не метод расширения, перегрузка оператора. – juharr

ответ

3

перегрузки оператора можно сделать так:

public static Zoo operator +(Zoo z1, Zoo z2) 
    { 
     return new Zoo(z1.lionCount + z2.lionCount, z1.cheetahCount + z2.cheetahCount); 
    } 

Я думаю, вы можете выяснить другие операторы самостоятельно. Для получения дополнительной информации см этого учебник: link to tutorial

Примечания: оператор должен быть помещен внутри самого (Zoo класса в данном случае) класса

+0

Обратите внимание, что это должно быть в классе 'Zoo'. –

+0

Довольно прямо мне, но я добавлю, что хе-хе – kevintjuh93

7

Конечно, вы можете с помощью оператора перегружать

class Zoo 
{ 
    public int lionCount; 
    public int cheetahCount; 

    Zoo(int lions, int cheetahs) 
    { 
    lionCount = lions; 
    cheetahCount = cheetahs; 
    } 

    public static Zoo operator +(Zoo z1, Zoo z2) 
    { 
    return new Zoo(z1.lionCount + z2.lionCount, z1.cheetahCount + z2.cheetahCount); 
    } 
} 

другие операторы обрабатывают практически одинаково ;-)

Для получения дополнительной информации об этом уточните https://msdn.microsoft.com/en-us/library/aa288467(v=vs.71).aspx

Смежные вопросы