Можете ли вы распечатать содержимое делегата? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть метод, в котором я создаю случайное число, вызванное из другого класса.Создание делегата и указание на этот метод вызывает сам этот метод, и генерируется случайное число.Я не могу получить доступ к этому методу без создания нового случайного числа.Я хочу, чтобы этот метод возвращал значение с делегатом.Написав это "Console.WriteLine (some_kind_delegate);"дает мне путь "Consoleapp8.class + метод".

PS, хотя, когда я использую делегат, при сравнении его указанного значения с другой переменной ответ правильный.

Снимок экрана в среде Visual Studio с моими комментариями:https://www.dropbox.com/s/cx6858x5qen7k1p/dayum.PNG?dl=0

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp8
{
    abstract class variklis
    {
        delegate int delegatas();
        static int litrazas;

        static void Main()
        {

            Console.WriteLine("serijinis bloko numeris: " + blokas.serijinis_bloko_numeris());
            Console.WriteLine("variklio tipas: In-line " + blokas.vidus() + " cilindrai");
            Console.WriteLine("stumokliu skaicius: " + stumokliai.stumokliuskaicius);
            Console.WriteLine("stumokliu kodas: " + stumokliai.stumokliu_kodas());
            Console.Write("galimas variklio litrazas siam automobiliui: ");
            int.TryParse(Console.ReadLine(), out litrazas);

            litrazui();
        }

            public static void litrazui()
            {
            string damm;
            delegatas zeta;
            zeta = blokas.litrazas;
            Console.WriteLine(zeta);
            if (zeta() <= litrazas)
            {
                damm = "variklis tinkamas siam automobiliui";
            }
            else
            {
                damm = "variklis netinkamas siam automobiliui";
            }
            Console.WriteLine(damm);
            }
        }
    }

1 Ответ

0 голосов
/ 03 декабря 2018

Проблема связана с тем, что Console.WriteLine неявно преобразует делегат в строку, которая является Consoleapp8.class+method, вместо этого вам нужно вызывать функцию, добавляя скобки в конце.

Console.WriteLine(zeta());

И ответить на вопрос в своем комментарии.Если вам нужно сохранить значение int, возвращаемое делегатом, вы можете применить тот же принцип, описанный выше, добавив скобки для вызова функции.

int number = zeta();
...