Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/48: Рейтинг темы: голосов - 48, средняя оценка - 4.92
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521

Возврат имени экземпляра класса

03.07.2012, 12:49. Показов 9033. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть класс CLASS1, у него 2 экземпляра- ex1 и ex2. Нужно что бы при вызове метода в одном из экземпляров класса метод возвращал это самое имя экземпляра: ex1 или ex2, как реализовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.07.2012, 12:49
Ответы с готовыми решениями:

Передача имени класса и создание экземпляра соответствующего объекта
Добрый день! В моем приложении часто используется код: if (!Dialogs.connectedToDB()) return; ImportForm imvf...

Создать экземпляр метода класса или доступ к методу из экземпляра класса
Всем доброго времени суток!) Уже месяца как 2 не сишарпил и подзабыл...собственно задача такая: Создать отдельный экземпляр класса для...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); Вопрос: BC - это экземпляр класса BaseClass...

13
 Аватар для oblomingo
7 / 7 / 4
Регистрация: 20.06.2012
Сообщений: 129
Записей в блоге: 4
03.07.2012, 12:57
Используйте рефлексию:

C#
1
Console.WriteLine(ex1.GetType().Name);
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
03.07.2012, 12:57
Не понятна задача. При вызове метода Вы же не можете миновать название экземпляра, я имею в виду вызов типа ex1.Method(). Зачем тогда метод, возвращающий имя экземпляра?
0
 Аватар для oblomingo
7 / 7 / 4
Регистрация: 20.06.2012
Сообщений: 129
Записей в блоге: 4
03.07.2012, 13:02
Вот полный вариант:
C#
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
35
36
using System;
 
namespace ReturnName {
 
    class Class1 {
        int x;
        int y;
 
        public Class1(int a, int b) {
            x = a;
            y = b;
        }
        public void ShowTypeName() {
            Console.WriteLine(this.GetType().Name);
        }
 
    }
 
    class Class2 {
        int x;
        int y;
 
        public Class2(int a, int b) {
            x = a;
            y = b;
        }
    }
    class Program {
        static void Main(string[] args) {
            Class1 ex1 = new Class1(2, 3);
            Class2 ex2 = new Class2(10, 20);
 
            ex1.ShowTypeName();
        }
    }
}
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
03.07.2012, 13:09  [ТС]
Цитата Сообщение от oblomingo Посмотреть сообщение
Используйте рефлексию:

C#
1
Console.WriteLine(ex1.GetType().Name);
Возврат идёт не имени экземпляра, а имени класса.

Цитата Сообщение от oblomingo Посмотреть сообщение
Вот полный вариант:
C#
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
35
36
using System;
 
namespace ReturnName {
 
    class Class1 {
        int x;
        int y;
 
        public Class1(int a, int b) {
            x = a;
            y = b;
        }
        public void ShowTypeName() {
            Console.WriteLine(this.GetType().Name);
        }
 
    }
 
    class Class2 {
        int x;
        int y;
 
        public Class2(int a, int b) {
            x = a;
            y = b;
        }
    }
    class Program {
        static void Main(string[] args) {
            Class1 ex1 = new Class1(2, 3);
            Class2 ex2 = new Class2(10, 20);
 
            ex1.ShowTypeName();
        }
    }
}


Нее, вы все немного неправильно поняли, класс один, но в проекте создаются 2 экземпляра

C#
1
2
ex1= new MyClass();
ex2= new MyClass();
потом в одной из функций идёт вызов методов каждого класса.

C#
1
2
string st=ex1.ReturnName(); // должно возвратить ex1
string st=ex2.ReturnName(); //должно возвратить  ex2
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 8
03.07.2012, 13:10
возвращает имя класса, а надо имя экземпляра класса вроде
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
03.07.2012, 13:12
Цитата Сообщение от Dophin Посмотреть сообщение
а надо имя экземпляра класса вроде
У экземпляра класса нет имени.
Если вы имеете ввиду имя переменной, то его получить не получится. Все испльзуемые именя переменных не существуют во время работы программы.
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 8
03.07.2012, 13:19
может так ?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class ClassName
    {
        string name;
 
        public ClassName ( string n )
        {
            name = n;
        }
        public string ReturnName ()
        {
            return name;
        }
    }
C#
1
2
3
4
5
6
7
  void testName ( object sender, RoutedEventArgs e )
        {
            ClassName ex1 = new ClassName ( "ex1" );
            ClassName ex2 = new ClassName ( "ex2" );
 
            lb1.Content = ex1.ReturnName ();
        }
0
 Аватар для oblomingo
7 / 7 / 4
Регистрация: 20.06.2012
Сообщений: 129
Записей в блоге: 4
03.07.2012, 13:25
ncuX1, а для каких целей вам имя экземпляра нужно?
Я только вчера читал Шилдта, главу о рефлексии - там рассказывалось как можно возвращать имя класса, конструкторы, методы, их сигнатуру. Увы, о том что вы ищете ничего написано не было.
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
03.07.2012, 13:31  [ТС]
Цитата Сообщение от oblomingo Посмотреть сообщение
ncuX1, а для каких целей вам имя экземпляра нужно?
Я только вчера читал Шилдта, главу о рефлексии - там рассказывалось как можно возвращать имя класса, конструкторы, методы, их сигнатуру. Увы, о том что вы ищете ничего написано не было.
Есть в игре класс UNIT, есть 20 видов юнитов, у каждого вида юнитов может быть около 200 экземпляров-копий. Как сделать при выделении юнита показ ID конкретного вида я уже реализовал, а как вывести сам тип- не знаю.
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
03.07.2012, 14:17
Цитата Сообщение от ncuX1 Посмотреть сообщение
а как вывести сам тип- не знаю.
Тип чего? Как вам уже сказали, по экземпляру некоторого класса можно определить сам класс, вывести информацию по нему. А так - давай им поля вида int ID, заполняйте и выводите его, если вам надо отличать два объекта одного и того же класса.
0
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
03.07.2012, 14:21  [ТС]
Проблема решена, просто при объявлении спрайта юнита передаём ему строку в переменную TYPE
0
0 / 0 / 0
Регистрация: 28.08.2022
Сообщений: 1
28.08.2022, 15:49
C#
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Person
    {
        public string name { get; set; }
        public string surname { get; set; }
        public void GetFullName(string type)
        {
            Console.WriteLine($"Person: {type}\tname: {name}\tsurname: {surname}");
        }
        public static void ShowPeoples(Person[] obj)
        {
            foreach (var person in obj)            
                person.GetFullName(person.GetType().Name);
        }
    }
 
    class Employee: Person
    {
        public int salary { get; set; }
    }
 
    class Guard: Employee
    {
        public void Ohrana()
        {
            Console.WriteLine("I'm guarding");
        }
    }
 
    class Money: Employee
    {
        public void Groshi()
        {
            Console.WriteLine("I'm counting");
        }
    }
 
    class Student: Person
    {
        public void Stud()
        {
            Console.WriteLine("I'm teaching");
        }
    }
 
 
В мэйне создаем экземпляры класса
 
            Person student = new Student() { name = "Vala", surname = "Sory" };
            Person guard = new Guard() { name = "Oleg", surname = "Tolk" };
            Person buhgalter = new Money() { name = "Anzhela", surname = "Ivanova" };
 
            Person[] people = new Person[] { student, guard, buhgalter };
 
            Person.ShowPeoples(people);
 
 
На выходе получаем имена экзампляров и их содержимое
 
Person: Student name: Vala      surname: Sory
Person: Guard   name: Oleg      surname: Tolk
Person: Money   name: Anzhela   surname: Ivanova
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
28.08.2022, 17:01
Цитата Сообщение от turbanoff Посмотреть сообщение
имя переменной, то его получить не получится
ncuX1, вы не задумывались почему у всех визуальный компонентов есть внутреннее имя? как раз для того чтобы разделять экземпляры ТИПОВ. Для компилятора ваши экземпляры абсолютно одинаковые, имена экземпляров конечно могут и сохранится но знает об них только компилятор(), и если использовать какой обфускатор, то ваши имена превратятся в тыкву.

Добавлено через 4 минуты
И чтобы получить имя экземпляра при компиляции и сохранить его куда то, используйте nameof.

Языки пишутся для программистов а не для компиляторов и исполняющих их компьютеров, Для выполнения ваши названия идентификаторов абсолютно не нужны. Они нужны только вам чтобы глазками различать переменные, типы и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2022, 17:01
Помогаю со студенческими работами здесь

Обращение к методу дочернего класса из экземпляра родительского класса
Как обратиться к методу дочернего класса из экземпляра родительского класса? К примеру здесь как обратиться к Method, Translate static...

Возврат по имени метода
static void IsSolution(double a,double b, double c,ref double x1, ref double x2) { double d = b * b - 4 * a * c; ...

Удаление экземпляра класса
нужно при помощи кнопки удалить выбранный в treeview экземпляр класса. объявление массивов List<AnimalTip> tipAnimalList = new...

Создание экземпляра класса
Народ, можете пожалуйста доходчиво объяснить в чем разница. есть, например, класс class MyClass { public...

Создание экземпляра класса
Как написать класс class Class1 Class1(int x1,int x2) { ........ } так чтобы при вызове


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru