Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> статический extension method 
:(
    Опции темы
nmn
Дата 4.3.2010, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



здравствуйте

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

например:

Код

//объявление расширяющего метода для string
string testextension(...)
....

string teststring=string.testextension(....);


PM Skype   Вверх
CYBERDREAM
Дата 4.3.2010, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 11
Всего: 28



А что значит расширяемый?
Объяви метод статиком, если ты конечно это имел ввиду


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
nmn
Дата 4.3.2010, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



расширяющий метод, не расширяемый
extension method


пример расширяющего метода, который привязывается к экземпляру класса
Код

static class extclass
{
public static string(this int N) MyToString()
{
return N.ToString();
}
}

int test=100;
Console.WriteLine(test.MyToString());


а нужна привязка к классу
Код

Console.WriteLine(int.MyExtension());

PM Skype   Вверх
Ram1reS
Дата 4.3.2010, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 25.4.2008
Где: Москва

Репутация: 3
Всего: 5



Насколько видно из синтаксиса объявления, то нельзя.
(this string str,...) - прямо указывает, что необходим экземляр объекта.

Ищите обходные пути - либо вызывайте статический метод ручками(что в итоге и происходит при использовании extension methods), либо наследуйтесь/пишите класс-обертку.

P.S. для простых типов можно вызывать extension таким образом:

Код

2.MyExtensionMethod();
"Hello".MyExtensionMethod();


P.P.S. Вы не первый кто задается этим вопросом:
http://stackoverflow.com/questions/249222/...ng-static-class
http://stackoverflow.com/questions/2004416...-a-static-class

Это сообщение отредактировал(а) Ram1reS - 4.3.2010, 16:45
--------------------
 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.