ความสามารถในการเข้าถึงที่ไม่สอดคล้องกัน: ประเภทคุณสมบัติเข้าถึงได้น้อย


101

โปรดมีคนช่วยแก้ไขข้อผิดพลาดต่อไปนี้:

การเข้าถึงที่ไม่สอดคล้องกัน: ประเภทคุณสมบัติ 'Test.Delivery' สามารถเข้าถึงได้น้อยกว่าคุณสมบัติ 'Test.Form1.thelivery'

private Delivery thedelivery;

public Delivery thedelivery
{
    get { return thedelivery; }
    set { thedelivery = value; }
}

ฉันไม่สามารถเรียกใช้โปรแกรมได้เนื่องจากข้อความแสดงข้อผิดพลาดของความไม่สอดคล้องกัน

ชั้นจัดส่งของฉันมีดังนี้:

namespace Test
{
    class Delivery
    {
        private string name;
        private string address;
        private DateTime arrivalTime;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        public DateTime ArrivlaTime
        {
            get { return arrivalTime; }
            set { arrivalTime = value; }
        }

        public string ToString()
        {
            { return name + address + arrivalTime.ToString(); }
        }
    }
}

คำตอบ:


216

ทำการpublicแก้ไขการเข้าถึงชั้นเรียนของคุณ

เพียงแค่ใส่publicคำหลักหน้าชื่อชั้นเรียนของคุณ

 namespace Test
{
  public  class Delivery
    {
        private string name;
        private string address;
        private DateTime arrivalTime;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public string Address
        {
            get { return address; }
            set { address = value; }
        }

        public DateTime ArrivlaTime
        {
            get { return arrivalTime; }
            set { arrivalTime = value; }
        }

        public string ToString()
        {
            { return name + address + arrivalTime.ToString(); }
        }
    }
}

0 Down โหวตยอมรับขอโทษช่วยบอกวิธีทำให้ชั้นเรียนเป็นตัวปรับการเข้าถึงแบบสาธารณะ
David Bukera

@DavidBukera: ฉันคิดว่าคุณเข้าใจแล้ว
Ravindra Bagale

6
วิธีแก้ปัญหาของฉันคือการลบ publicออกจากนิยามคลาสของฉัน
Cody

13

ชั้นเรียนของคุณยังไม่มีการปรับปรุงการเข้าถึงซึ่งหมายความว่ามันเริ่มต้นที่Delivery internalหากคุณพยายามเปิดเผยคุณสมบัติประเภทนั้นเป็นpublicก็จะไม่ได้ผล ประเภท (คลาส) ของคุณต้องมีการเข้าถึงที่เหมือนกันหรือสูงกว่าเป็นคุณสมบัติ

เพิ่มเติมเกี่ยวกับตัวปรับแต่งการเข้าถึง: http://msdn.microsoft.com/en-us/library/ms173121.aspx


8

Deliveryชั้นเรียนของคุณเป็นแบบภายใน (การเปิดเผยเริ่มต้นสำหรับคลาส) อย่างไรก็ตามคุณสมบัติ (และน่าจะเป็นคลาสที่มี) เป็นแบบสาธารณะดังนั้นคุณสมบัติจึงสามารถเข้าถึงได้มากกว่าDeliveryคลาส คุณจำเป็นต้องDeliveryเปิดเผยต่อสาธารณะหรือ จำกัด การเปิดเผยtheliveryทรัพย์สิน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.