C# 如何在派生类中获取抽象类构造函数值

C# 如何在派生类中获取抽象类构造函数值,c#,class,abstract-class,C#,Class,Abstract Class,如何在派生类中获取抽象类构造函数值 public abstract class ABC { private string data = "hi"; protected ABC(string myString) { myString = data; } } public class XYZ: ABC

如何在派生类中获取抽象类构造函数值

   public abstract class ABC
        {
            private string data = "hi";

            protected ABC(string myString)
            {
                myString = data;
            }
        }
        public class XYZ: ABC
        {
            public string abc= "";
            public XYZ(string myString)
                : base(myString)
            {
                abc = myString;
            }
        }

          XYZ var = new XYZ("567");
          Response.Write(var.abc);

我获得567作为输出,如何获得“hi567”或“567hi”甚至“hi”。

这是一个可以提供您想要的输出的东西,但不确定您在想什么-

    public abstract class ABC
    {
        private string data = "hi ";

        protected ABC(string myString)
        {
            data += myString;
        }

        public string PropToReturnValuePassedInCtor{ get { return data; } }
    }

    public class XYZ: ABC
    {
        public string abc = "";

        public XYZ(string myString)
            : base(myString)
        {
            abc = base.PropToReturnValuePassedInCtor;
        }
    }

    var t = new XYZ("567");
    Console.Write(t.abc); //hi 567 

很简单,但有点奇怪:

using System;

namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var var = new XYZ("567");
            Console.WriteLine(var.abc);

            Console.ReadLine();
        }
    }

    public abstract class ABC
    {
        private string data = "hi";

        protected ABC(string myString, out string outString)
        {
            myString = this.data;
            outString = myString;
        }
    }

    public class XYZ : ABC
    {
        public string abc = "";

        public XYZ(string myString) : this(myString, string.Empty)
        {
        }

        private XYZ(string myString, string outString) : base(myString, out outString)
        {
            this.abc = outString + myString;
        }
    }
}

您只需要将一个参数传递给基本构造函数。

这似乎完全取决于语言的确切实现/语法。这是Java吗?我已经为你标记了这个问题。请记住,本网站接受任何编程语言或技术的问题,因此您必须使用标记来指定这些问题。请给出一个您试图完成的实际示例。这似乎是一件很奇怪的事情。我开始写答案,但后来我重申我不知道你想完成什么。请更好地解释。我只是想知道,我可以在派生类中获得抽象类构造函数值吗??,如果是,那么如何获得?我认为提问者想保持
数据的私有性,不想通过属性将其公开。@PeterPerot-如果OP想隐藏它,为什么要访问它?@AmitKumarGhosh:不知道。无论如何,使用没有参数的构造函数被认为是不好的做法。我从来没有使用过它,但是-它是可以做到的。如果您想向类公开某些私有数据,请使用属性。。。。受保护的属性-否则它从外面是可见的。我也在想
out
参数,也在想“怪异”。在抽象类中,构造函数实际上不需要第一个参数,因此使用
protectedabc(out-string-outString){outString=data;}
将ref或out参数传递给构造函数是很难看的