2016-06-15 9 views
-1

派生クラスで抽象クラスのコンストラクタ値を取得する方法。派生クラスで抽象クラスのコンストラクタ値を取得する方法

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); 

「hi567」または「567hi」または「hi」を取得する方法は、出力として567を取得しています。

+0

これは、言語の正確な実装/構文に完全に依存するように見えます。これはJavaですか? –

+0

そのC#ではないJava –

+0

私はあなたのために質問を再タグ付けしました。このサイトはプログラミング言語や技術に関する質問を受け付けるため、タグを使用して指定する必要があります。 –

答えて

1

かなりシンプル - しかし、ちょっと奇妙:

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; 
     } 
    } 
} 

あなただけ渡す必要がありますout-parameterをベースコンストラクタに渡します。

+0

私はまた、 "out"パラメータを考えていて、 "奇妙な"と思っていました。抽象クラスでは、コンストラクタは実際には最初のパラメータを必要としないので、 'protected ABC(out string outString){outString = data; } ' –

+0

ありがとう@Peter私が探しているもの... –

+0

refまたはoutパラメータをコンストラクタに渡すことは醜いです –

0

これは、あなたが望む出力を与えるものですが、あなたの心の中で何もののわからない -

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 
+0

私は質問者が 'データ'を非公開にしたいと思うし、プロパティを介してそれを公開したくないと思う。 –

+0

こんにちは@Amit、私はあなたのコードを実行したが、何も出力していない.. –

+0

@PeterPerot - OPがそれを隠そうとしているのなら、なぜそれにアクセスするの? –

関連する問題