Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/10: Рейтинг темы: голосов - 10, средняя оценка - 4.50
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532

Вычислить хэш экземпляра класса автоматически на основе инициализаторов

11.02.2016, 11:07. Показов 2245. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хай.
Есть некий класс и нужно, чтобы он содержал:
поле - только для чтения (например, для каждого экземпляра сделайте
поле только для чтения ID - равно некоторому уникальному номеру
(хэшу) вычисляемому автоматически на основе инициализаторов
объекта);
Как это?
Буду благодарен за помощь, спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2016, 11:07
Ответы с готовыми решениями:

Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Если уже есть готовый объект базового класса. Могу я построить экземпляр дочернего на его основе, (напр., получив такой базовый объект...

Обобщение НЕ на основе класса, а его экземпляра
Есть объект класса Object, который может содержать, условно, класс MyClass1, MyClass2 ... Определить объект какого класса на самом деле...

Почему при вызове метода у экземпляра класса он сначала ищет у экземпляра
Всем привет, после прочтения Лутца про ООП появился такой вопрос почему при вызове метода у экземпляра класса он сначала ищет у экземпляра,...

6
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
11.02.2016, 11:30
Может быть что-то такое:
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
using System.Security.Cryptography;
 
class Foo
{
    public string ID { get; private set; }    
    public string Name { get; private set; }
    public string Surname { get; private set; }
    
    public Foo(string name, string surname)
    {
        Name = name;
        Surname = surname;
        
        using (MD5 hash = MD5.Create())
        {
            ID = GetMd5Hash(hash, name + surname);            
        }
    }
    
    private string GetMd5Hash(MD5 md5Hash, string input)
        {
 
            // Convert the input string to a byte array and compute the hash.
            byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
 
            // Create a new Stringbuilder to collect the bytes
            // and create a string.
            StringBuilder sBuilder = new StringBuilder();
 
            // Loop through each byte of the hashed data 
            // and format each one as a hexadecimal string.
            for (int i = 0; i < data.Length; i++)
            {
                sBuilder.Append(data[i].ToString("x2"));
            }
 
            // Return the hexadecimal string.
            return sBuilder.ToString();
        }
}
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
11.02.2016, 11:44  [ТС]
Kruds, причем тут шифрование? нужно использовать GetHashCode().
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
11.02.2016, 11:46
Цитата Сообщение от SanychBY Посмотреть сообщение
Как это?
Ну вот видите, вы сами знаете что к чему
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
11.02.2016, 11:50  [ТС]
Kruds, Для меня не понятно:
равно некоторому уникальному номеру
(хэшу) вычисляемому автоматически на основе инициализаторов
объекта)
Не само вычисление хэша, а как сделать, чтобы он вычислялся автоматически на основе инициализаторов.
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
11.02.2016, 11:55
C#
1
2
3
4
5
6
public Foo(string name, string surname)
    {
        Name = name;
        Surname = surname;
        ID = name.GetHashCode() + surname.GetHashCode();
    }
Правда ни о какой уникальности тут речи не идет
0
Эксперт .NET
 Аватар для Usaga
14296 / 9381 / 1353
Регистрация: 21.01.2016
Сообщений: 35,368
11.02.2016, 14:18
Ну, уникальности можно попытаться добиться старым дедовским способом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Foo
{
    private static uint _fooSerialNumber = 0;
 
    public uint ID { get; private set; }    
    public string Name { get; private set; }
    public string Surname { get; private set; }
    
    public Foo(string name, string surname)
    {
        Name = name;
        Surname = surname;
        
        ID = (uint)name.GetHashCode() + (uint)surname.GetHashCode() + _fooSerialNumber;
        _fooSerialNumber++;
    }
Хотя и этот способ не идеален. Хэши уникальность не гарантируют.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2016, 14:18
Помогаю со студенческими работами здесь

Создание экземпляра класса, разрушение экземпляра класса
Не могу найти информацию про разрущение экземпляра класса. Объясните пожалуйста, что это?

При создании экземпляра класса, создается 2 экземпляра вместо 1
Подсчет экземпляров ведется с помощью статического члена num_dogs, который во всех трех конструкторах (1. по умолчанию, 2. со всеми...

Создание нового экземпляра дочернего класса из экземпляра базового
Всем привет! Извиняюсь, если вопрос глупый, но что-то не смог найти конкретный ответ на него... У меня есть несколько классов: все они...

Сложение экземпляра базового класса и экземпляра наследника
Добрый вечер! Моя задача - сложить экземпляр базового класса и наследника. Нужно сделать так, чтобы результат сложения &quot;знал&quot;...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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 https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru