Kishor-KW Ответов: 2

Доступ к частному конструктору в другом классе


Я хочу получить доступ к частному конструктору в другом классе. Может это возможно через цепочку конструктора. Я попробовал следовать коду для него, но это не разрешено.

в следующем коде я объявил переменную k1=1 в классе, а затем изменил ее в частном конструкторе k1=2. когда я создаю объект другого конструктора, который также является параметризованным и общедоступным. Я позвонил. но частный конструктор не вызывается.


пожалуйста помочь.

Что я уже пробовал:

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

namespace ConsoleApplication2
{
    class Program
    {
        int k1 = 1;
        private Program()
        {
            k1 = 2;


        }
        public Program(int k)
        {
            k = k1;
        }

        public void ftr()
        {

            Console.WriteLine(k1);
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            gtr g = new gtr();
            g.main();
        }
    }

    class gtr
    {
        Program p=new Program(1);

      public   void main()
        {
            p.ftr();
        }



    }
}

2 Ответов

Рейтинг:
1

Dave Kreskowiak

Ты не можешь. Private означает, что он доступен только внутри класса, в котором он объявлен.

У вас также есть пара переменных, перевернутых в вашем конструкторе, которые принимают int в качестве параметра. Так и должно быть:

public Program(int k)
{
    k1 = k;
}


Maciej Los

5ед!

Рейтинг:
1

User 59241

Если вы окажетесь в такой ситуации, вам следует сначала обратиться к дизайну ваших классов.
c# - зачем нам нужен частный конструктор? - переполнение стека[^]

Вот хак с использованием отражения, который вы, возможно, захотите попробовать:
Доступ к закрытому конструктору извне класса В C# - переполнение стека[^]