Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 39

Ссылочный тип object ведет себя как тип значений

28.03.2020, 09:58. Показов 1657. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
int x = 1;
object y = x;
++x;
Console.WriteLine(y);
объекту y задана ссылка на x, почему при изменения значения x, y все еще 1?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2020, 09:58
Ответы с готовыми решениями:

Тип VB Object. Как такой тип пишется на C#?
Привет всем! Пдскажите, пожалуйста, как тип VB Object пишется на C# ? Спасибо!

Комбинированный тип. Ссылочный тип
1) Поле записи комбинированного типа представляет собой: а)описание переменной, в)описание простой переменной, с)описание константы 2)...

Ссылочный тип (тип указатель)
Такая проблема. Дали лабораторную работу на эту тему, однако как обычно ничего не объяснили. Покидайте пожалуйста примеры программ на тип...

8
dive
 Аватар для I can
4956 / 4656 / 844
Регистрация: 13.04.2015
Сообщений: 9,854
28.03.2020, 10:20
Цитата Сообщение от Amangeldi96 Посмотреть сообщение
объекту y задана ссылка на x
Нет.
0
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 39
28.03.2020, 10:30  [ТС]
ok
C#
1
2
3
4
 object x = 1;
object y = x;
x = 2;
Console.WriteLine(y);
Тот же еффект, почему y не 2?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
28.03.2020, 11:52
boxing/unboxing?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
28.03.2020, 12:18
Amangeldi96, ты считаешь, что у должно автоматически измениться после того, как ты изменил значение х, да ещё после того, как присвоил старое значение? Вроде как здесь магия не задействована.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
28.03.2020, 12:34
Лучший ответ Сообщение было отмечено Amangeldi96 как решение

Решение

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
        static void Test1()
        {
            int x = 1;
            object y = x;
            ++x;
            Console.WriteLine(y); // 1
        }
 
        static void Test2()
        {
            object x = 1;
            object y = x;
            x = 2;
            Console.WriteLine(y); // 1
        }
 
        static void Test3()
        {
            object x = 1;
            ref object y = ref x;
            x = 2;
            Console.WriteLine(y); // 2
        }
 
        static void Test4()
        {
            int x = 1;
            ref int y = ref x;
            x++;
            Console.WriteLine(y); // 2
        }
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.03.2020, 12:47
Цитата Сообщение от Amangeldi96 Посмотреть сообщение
объекту y задана ссылка на x
Объекту у не задана ссылка на х, объект у — это новый экземпляр, имеющий то же значение, что и х.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
28.03.2020, 12:51
Amangeldi96, переменная и обьект это две разных разницы.

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
struct MyStruct
{
  public int Field;
}
 
class MyClass 
{
  public int FIeld;
}
 
var struct1 = new MyStruct();
struct1.Field = 1;
var struct2 = struct1; // полная копия обьекта
struct2.Field = 2;
Console.WriteLine(struct1.Field); // 1
 
var class1 = new MyClass();
class1.Field = 1;
var class2 = class1; // копируется только ссылка
class2.Field = 2;
Console.WriteLine(class1.Field); // 2
 
var struct1 = new MyStruct();
struct1.Field = 1;
object myObject1 = struct1; // упаковка - полная копия обьекта с выделением памяти в heap
((MyStruct)myObject1).Field = 2; // распаковка - полная копия обьекта в стек
Console.WriteLine(((MyStruct)myObject1).Field); // 1, еще одна полная копия
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
29.03.2020, 04:03
Amangeldi96, может быть не совсем конкретно по вопросу, но ожидаемого поведения можно добиться так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 10;
            ref int numberRef = ref number;
            ++number;
 
            Console.WriteLine($"{nameof(number)} = {number.ToString()}");
            Console.WriteLine($"{nameof(numberRef)} = {numberRef.ToString()}");
            Console.ReadKey();
        }
    }
}
ref (Справочник по C#)
Типы и переменные

Добавлено через 4 минуты

Не по теме:

Someone007, не видел, что подобный ответ был уже дан.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2020, 04:03
Помогаю со студенческими работами здесь

Ссылочный тип в конструкторе, как применить правильно?
Пишу калькулятор для одной группы в ВК, сейчас занялся прописыванием "оружия". Задумка проста, через конструктор создавать оружие с...

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении?
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

Ссылочный тип
Есть ли разница и как лучше писать void sum(int &a, int &b); или void sum(int a ,int b); Что лучше, и почему?...

Ссылочный тип
Здравствуйте, сейчас интересуюсь теорией. Хочу посмотреть на выражение string field = null; чуть по другому. тип данных String -...

Ссылочный тип
Добрый день. Кто может сказать, сколько памяти выделяется для переменной с типом типизированный указателя в Паскаль? Спасибо.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru