Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 21.12.2018
Сообщений: 45

Ref на Out

23.12.2018, 16:25. Показов 1817. Ответов 2

Студворк — интернет-сервис помощи студентам
Нужно переписать с Ref на Out, понятия не имею как


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
62
63
64
65
66
67
68
class Program
    {
        static Random rnd = new Random();
        public static void Main(string[] args)
        {
            int [,] A = Matrix(5);
            writeMatrix(A);
            NewRefMatrix(ref A);
            writeNewMatrix(A);
 
            int [,] B = Matrix(7);
            writeMatrix(B);
            NewRefMatrix(ref B);
            writeNewMatrix(B);
 
            Console.ReadKey(true);
        }
        static int[,] Matrix(int w)
        {
            int[,] M = new int[w,w];
            for (int i=0; i<M.GetLength(0); i++)
                for (int j=0; j <M.GetLength(1); j++)
                    M[i, j]=rnd.Next(10,100);
            return M;
        }
        static void NewRefMatrix(ref int [,] E)
        {
            int c;
            for (int i=0; i<E.GetLength(0); i++)
            {
                for (int j=i; j <E.GetLength(1); j++)
                {
                    if(E[i,i]<E[j,j])
                    {
                        c=E[i,i];
                        E[i,i]=E[j,j];
                        E[j,j]=c;
                    }
                }
            }
        }
        static void writeMatrix(int[,]W)
        {
            Console.WriteLine("Исходная матрица:");
            for (int i = 0; i<W.GetLength(0); i++)
            {
                for (int j = 0; j< W.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t",W[i,j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
        static void writeNewMatrix(int[,]W)
        {
            Console.WriteLine("Новая матрица:");
            for (int i = 0; i<W.GetLength(0); i++)
            {
                for (int j = 0; j< W.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t",W[i,j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2018, 16:25
Ответы с готовыми решениями:

Полиморфизм: ошибка преобразование типа из "ref cl_child" в "ref cl_proto" невозможно
Создал класс предок cl_proto, объявил класс потомок cl_child : cl_proto. Написал отдельную функцию с параметром-типом ref cl_proto - на...

Ошибка Cannot convert from 'ref decimal' to 'ref decimal?
Здравствуйте подскажите пожалуйста почему в строке this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena); ...

Ref в C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

2
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
23.12.2018, 16:47
Лучший ответ Сообщение было отмечено Frager2106 как решение

Решение

Как то так.
Суть в том что ref нужно инициализировать вне метода и передавать уже инициализированную переменную.
Out же можно передавать не инициализируя. Его нужно инициализировать в методе.

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
62
63
64
65
66
67
68
69
70
    class Program
    {
        static Random rnd = new Random();
        public static void Main(string[] args)
        {
            int[,] A;
            NewRefMatrix(out A,5);
            writeNewMatrix(A);
 
            int[,] B;
            NewRefMatrix(out B,7);
            writeNewMatrix(B);
 
            Console.ReadKey(true);
        }
        static int[,] Matrix(int w)
        {
            int[,] M = new int[w, w];
            for (int i = 0; i < M.GetLength(0); i++)
                for (int j = 0; j < M.GetLength(1); j++)
                    M[i, j] = rnd.Next(10, 100);
            return M;
        }
        static void NewRefMatrix(out int[,] E, int Lenght)
        {
            int c;
            var matrix = Matrix(Lenght);
 
            for (int i = 0; i < matrix.GetLength(0); i++)
            {
                for (int j = i; j < matrix.GetLength(1); j++)
                {
                    if (matrix[i, i] < matrix[j, j])
                    {
                        c = matrix[i, i];
                        matrix[i, i] = matrix[j, j];
                        matrix[j, j] = c;
                    }
                }
            }
 
            E = matrix;
        }
        static void writeMatrix(int[,] W)
        {
            Console.WriteLine("Исходная матрица:");
            for (int i = 0; i < W.GetLength(0); i++)
            {
                for (int j = 0; j < W.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t", W[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
        static void writeNewMatrix(int[,] W)
        {
            Console.WriteLine("Новая матрица:");
            for (int i = 0; i < W.GetLength(0); i++)
            {
                for (int j = 0; j < W.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t", W[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
0
.NET C#,ASP.NET MVC
Эксперт .NET
 Аватар для lvlkoo
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
23.12.2018, 16:51
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
62
63
64
65
66
67
68
69
70
internal class Program
    {
        private static readonly Random _rnd = new Random();
 
        public static void Main(string[] args)
        {
            NewRefMatrix(out var a, 5);
            WriteNewMatrix(a);
 
            NewRefMatrix(out var b, 7);
            WriteNewMatrix(b);
 
            Console.ReadKey(true);
        }
 
        private static int[,] Matrix(int w)
        {
            var m = new int[w, w];
            for (var i = 0; i < m.GetLength(0); i++)
            for (var j = 0; j < m.GetLength(1); j++)
                m[i, j] = _rnd.Next(10, 100);
            return m;
        }
 
        private static void NewRefMatrix(out int[,] e, int lenght)
        {
            e = Matrix(lenght);
            WriteMatrix(e);
            for (var i = 0; i < e.GetLength(0); i++)
            {
                for (var j = i; j < e.GetLength(1); j++)
                {
                    if (e[i, i] < e[j, j])
                    {
                        var c = e[i, i];
                        e[i, i] = e[j, j];
                        e[j, j] = c;
                    }
                }
            }
        }
 
        private static void WriteMatrix(int[,] w)
        {
            Console.WriteLine("Исходная матрица:");
            for (var i = 0; i < w.GetLength(0); i++)
            {
                for (var j = 0; j < w.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t", w[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
 
        private static void WriteNewMatrix(int[,] w)
        {
            Console.WriteLine("Новая матрица:");
            for (var i = 0; i < w.GetLength(0); i++)
            {
                for (var j = 0; j < w.GetLength(1); j++)
                {
                    Console.Write("{0,2}\t", w[i, j]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2018, 16:51
Помогаю со студенческими работами здесь

ref
есть на С# такая штука как ref (Reference) (вот статейка http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx, если кому интерестно). Ее...

$ref
Подскажите пожалуйста как поменять $REF не меняя тип данных?

get set и ref
допустим есть класс . Как учили - закрытые члены - доступ через get set . (сам я лично не вижу в этом особого смысла, но вот попробовал) ...

Использование ref out
помогите пожалуйста разобраться когда и зачем нужно использовать передачу объектов по ссылке с использованием ref out

Ref - cursor
Напишите процедуру, определяющую рейтинг лучших товаров по : − суммарной цене приобретённого за указанный срок товара; −...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта 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
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru