2016-06-16 2 views
1

У меня есть переменная theetaCurrent, которая отправляется другим приложением ко мне в 10-й степени. Я могу легко преобразовать его везде, используя функцию, но я хочу сделать что-то вроде theetaCurrent.ToRadians(). Прежде всего, возможно ли это? если да, то как? Ниже мой текущий методМетод расширения для преобразования градуса по радиусу в .net

double inRadians (double angleIn10thofaDegree) 
{ 
    // Angle in 10th of a degree 
    return (angleIn10thofaDegree*Math.PI)/1800; 
} 

Спасибо за вашу помощь.

ответ

6

Да, вы можете определить extension methods:

 
public static class Foo { 

    public static double ToRadians (this double angleIn10thofaDegree) { 
     // Angle in 10th of a degree 
     return (angleIn10thofaDegree*Math.PI)/1800; 
    } 

} 

В жирным шрифтом изменения, которые вы должны сделать:

  • сделать метод static;
  • изменить название на ToRadians;
  • добавить параметр this; и
  • определяют метод в классе static.

Вам нужно изменить имя, только если вы хотите назвать его theetaCurrent.ToRadians().

Для того, чтобы использовать метод расширения, вы должны использовать пространство имен, в котором Foo определяется.

Вы можете назвать его:

double result = original.ToRadians(); 

Однако, если вы намерены выполнить на месте преобразования с использованием методы расширения, например, что-то вроде:

double theetaCurrent = 180/Math.PI; 
theetaCurrent.ToRadians(); 
//now theetaCurrent is 0.1 

Это будет метод расширения с call-by-reference, который, насколько я знаю, не поддерживается. См. a StackOverflow answer of Jon Skeet here.

+1

Это, безусловно, лучший ответ, который у меня есть !!! Спасибо, что передали свои знания! –

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