2016-11-01 10 views
0

私は派生クラスに取り組んでいますが、親クラスに派生クラスをリンクしました。派生クラスにコンストラクタを設定していますが、 "値が現在のコンテキストに存在しません"それらが親クラスですでに宣言されているとき。これの原因は何ですか?そしてそれをどのように修正することができますか?あなたはあなたの子供のクラスのコンストラクタで、あなたのベースのコンストラクタのパラメータを取る必要があるMy Baseのコンストラクタの引数がありませんか?

親クラス

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

namespace HousingNameSpace 
{ 
    public abstract class Housing 
    { 
     private int sqFt; 
     private int zip; 
     private int yrBlt; 

     public Housing(int TSqFt, int Tzip, int TyrBlt) 
     { 
      sqFt = TSqFt; 

      zip = Tzip; 
      yrBlt = TyrBlt; 
     } 

     public int SqFt 
     { 

      get { return sqFt; } 

      set { sqFt = value; } 
     } 


    public int ZIP 
    { 

     get { return zip; } 

     set { zip = value; } 



     } 
     public int YrBlt 
     { 
      get{ return yrBlt; } 

      set { yrBlt = value; } 

     } 



     public abstract double GetRentAmmount(); 
    } 
    } 

派生クラス

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

namespace MultiTennant 
{ 
public class Multi:Housing 
{ 
    private string buildingtype; 
    private int occupants; 

    public string BuildingType 
    { 
     get{ return buildingtype; } 

     set { buildingtype = value; } 

    } 

    public int Occupants 
    { 
     get { return occupants; } 

     set { occupants = value; } 

    } 

    public Multi (string TbuildType) : base (TSqrFt, Tzip,TyrBlt) 
    { } 
} 
} 

答えて

2

public Multi (string TbuildType, int TSqrFt, int Tzip, int TyrBlt) 
    : base (TSqrFt, Tzip,TyrBlt) 

スタイルノート:変数に読みやすい名前を付けます。 squareFootageyearBuiltなど...あなたは後で自分自身に感謝するでしょう。

ああ、私は別の提案作ることができれば、これは全ての質問(ごめん)に関連していないが、知っている:

public enum BuildingType 
{ 
    House, 
    Apartment, 
    Condo 
    //etc 
} 

public interface IHousing 
{ 
    int SquareFootage { get; set; } 
    int YearBuilt { get; set; } 
    int ZipCode { get; set; } 
    int MaximumOccupants { get; set; }  
    int MortgageAmount { get; }  
    int RentalIncome { get; } 
    BuildingType BuildingType { get; } 
} 


public class MultiPersonHouse 
    : IHousing 
{ 
    public int SquareFootage { get; set; } 
    public int YearBuilt { get; set; } 
    public int ZipCode { get; set; } 
    public int MaximumOccupants { get; set; } 

    public int MortgageAmount { get; private set; }  
    public int RentalIncome { get; private set;} 
    public BuildingType BuildingType { get; private set;} 

    public MultiPersonHouse(int squareFootage, int yearBuilt /*etc...*/) 
    { 
     //set properties. 
     this.BuildingType = BuildingType.House; 
     this.MortgageAmount = 0; //Free! 
     this.RentalIncome = 0; //Free rent too! 
    } 
} 

し、各住宅のタイプのための1つを。あなたはたぶんMaximumOccupantsを取得したいと思っています。誰かが最大の占有率を変更しないようにします。

+0

ありがとうございます、あなたの絶対に正しいです。 – Jonathan

+0

問題ありません。問題が解決された場合は、受け入れ済みとしてマークしてください。 – Brandon

+0

@pokeあなたはまったく正しい...私の悪いです。コード化にVSを使用しませんでした。一定 – Brandon

関連する問題