Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/125: Рейтинг темы: голосов - 125, средняя оценка - 4.84
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6

Как создать ссылку на класс

28.04.2012, 19:24. Показов 26290. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Внимание, вопрос. В Delphi можно сделать такую штуку:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
   // просто обычный класс
  TMyClass = class
    constructor CReate(a: string; b: integer);
  end;
   //  ссылка на этот класс
  TMyClassReference = class of TMyCLass;
   ... 
   ///  использование:
var
    mcr: TMyClassReference;
    mc: TMyClass;
begin
   mcr := TMyClass;
   mc := mcr.CReate('it works', 0);
Внимание, вопрос. Можно ли получить аналогичную ссылку на класс в C#?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2012, 19:24
Ответы с готовыми решениями:

Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
Всем привет, как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С ? class A { public: A(); ...

Как в порождаемый класс передать ссылку на основной класс?
Основной класс: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "mypaint.h" namespace Ui { ...

Как вернуть ссылку на класс
Здравствуйте, есть класс и нужно вернуть на него ссылку, а затем перегрузить hashCode() , подскажите как это сделать, типо вот этого кода в...

2
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
28.04.2012, 21:08
Лучший ответ Сообщение было отмечено dondublon как решение

Решение

встречный вопрос, а зачем это нужно? В c# объект класса это уже ссылочный тип
т.е.
C#
1
2
3
4
5
public class MyClass
{
// ...........
}
MyClass mc = new MyClass(); // в данном случаи mc  это ссылка на область памяти
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
28.04.2012, 21:48  [ТС]
Отвечаю.
Так я могу передать для создания ссылку на класс-наследник, причем создающий не будет знать о наследнике и его специфике. Получается такая мини-фабрика. Нужно для разделения кусков логики. В виде кода выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
   // просто обычный класс.
   // создающий - о нём знает.
  TMyClass = class
    constructor CReate(a: string; b: integer);
  end;
  // наследник. о нём создающий уже не знает.
  TMyInherit = class(TMyClass)
 
  end;
   //  ссылка на этот класс
  TMyClassReference = class of TMyCLass;
 
  // создает наши классы:
  TWorker = class
      Fclass: TMyClassReference;
      procedure SetCustomClass(AValue: TMyClassReference);
      function MakeSomeClass(): boolean;
  end;
 
....................................
{ TWorker }
 
function TWorker.MakeSomeClass: boolean;
var
  working : TMyClass;
begin
  working := FCLass.Create('it works', 23);
  result := true;
end;
 
procedure TWorker.SetCustomClass(AValue: TMyClassReference);
begin
    Fclass := AValue;
end;
Я подаю в SetCustomClass как аргумент TMyInherit, после этого в MakeSomeClass у меня будет создаваться он, хотя TWorker про TMyInherit не знает.

Добавлено через 6 минут
В принципе, я нашел более-менее схожий функционал, но уж больно громоздко получается.
C#
1
2
3
       var t = typeof(DividerDraft); // это мой тип, его я могу передать
       var ci = t.GetConstructor(new Type[3]{ typeof(int[,]), typeof(DividerData), typeof(float)});
      // а это сцылко на его конструктор с тремя параметрами. могу и его передать, как вариант.
В любом случае, условие незнания о наследнике выполняется.

Добавлено через 4 минуты
Если кому интересно - вот, чувак провентилировал вопрос:
http://metaclass.livejournal.com/271563.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2012, 21:48
Помогаю со студенческими работами здесь

Как получить ссылку на класс объекта?
У меня есть контрол Panel класса MyToolTip. Как можно получить ссылку на MyToolTip через Panel? Пробывал через Control.Parent но Panel...

Как передать ссылку на объект в класс
Здравствуйте! Подскажите, пожалуйста, почему не работает: log.h class LogClass { public: bool InitializeLog(); void...

Как передать ссылку по клику в другой класс?
как передать ссылку по клику в другой класс есть класс парсера вот часть кода protected InputStream getInputStream() { ...

Как правильно передать ссылку в другой класс
Добрый день! Есть класс class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet...

Как получить ссылку на класс Page из .dll сборки
Как можно получить ссылку на класс Page, использующий сборку .dll? Например, если из сборки надо передать классу параметр...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru