Вызов переменной и списка в другом классе? - PullRequest
1 голос
/ 15 октября 2019

Я изучаю c # и наткнулся на проблему. Я пытался смотреть в Google, чтобы вызвать переменные в другой класс. Я нашел с помощью метода get set. Это единственный способ сделать это?

Другой вопрос: как мне затем извлечь информацию из списка в br, распечатанный в другом классе.

Код, который я сделал, можно найти ниже.

class Program
{
    public int Xyz { get; set; } = 15;

    public static void Main()
    {
        Console.WriteLine("Hello World");

        List<int> Lst = new List<int>();

        Lst.Add(1);
        Lst.Add(2);
        Lst.Add(3);

        for (int x = 0; x < Lst.Count; x++)

        {
            Console.WriteLine("This is number {0}.", Lst[x]);
        }
    }

    public class Tests
    {
        public void Next(int Xyz)
        {
            Console.WriteLine("Value of Xyz is: {0}", Xyz);
            Console.WriteLine("{0}", Lst.Count);
            List<int> Lst2 = new List<int>(Lst);
            Console.WriteLine("Lst2 has {0} values.", Lst2.Count);
        }
    }

}

То, что я хотел увидеть из

Console.WriteLine("Value of Xyz is: {0}", Xyz);, это значение 15.

и из

Console.WriteLine("{0}", Lst.Count); значение 3.

Большое спасибо! <3 </p>

Ответы [ 2 ]

0 голосов
/ 15 октября 2019
using System.Collections.Generic;
using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World");

        PulicZoom.Lst.Add(1);
        PulicZoom.Lst.Add(2);
        PulicZoom.Lst.Add(3);

        for (int x = 0; x < PulicZoom.Lst.Count; x++)

        {
            Console.WriteLine("This is number {0}.", PulicZoom.Lst[x]);
        }

        Tests test = new Tests();
        test.Next();
    }

    public class Tests
    {
        public void Next()
        {
            Console.WriteLine("Value of Xyz is: {0}", PulicZoom.Xyz);
            Console.WriteLine("{0}", PulicZoom.Lst.Count);
            List<int> Lst2 = new List<int>(PulicZoom.Lst);
            Console.WriteLine("Lst2 has {0} values.", Lst2.Count);
        }
    }

    public static class PulicZoom
    {
        public static int Xyz { get; set; } = 15;
        public static List<int> Lst = new List<int>();
    }

}
0 голосов
/ 15 октября 2019

Во-первых, вы должны узнать об основных объектно-ориентированных понятиях, включая область видимости переменных. Обратите внимание, что ваш Lst создан внутри функции 'main'. Это означает, что имя 'Lst' допустимо только внутри этой функции. Поскольку ваш класс Tests существует вне функции, он не может получить доступ к переменной.

Кроме того, вы определили функцию Next (int xyz) в тестах. Во-первых, этот xyz будет скрывать имя внешнего xyz, поскольку они имеют одно и то же имя. Это означает, что когда вы ссылаетесь на xyz, вы ссылаетесь только на xyz, переданный в функцию как переменную, а не на xyz снаружи. Кроме того, функция никогда нигде не вызывается. Как таковой, он не будет запущен. Поскольку функция находится внутри тестового класса, вам необходимо сначала создать экземпляр тестового объекта с помощью «Test t = new Test ();», а затем вызвать функцию с помощью «t.Next ();»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...