Член определил несколько раз сообщение об ошибке? - PullRequest
4 голосов
/ 26 мая 2011

Я использую c # в vs2010 и изучаю oop; моя первая попытка объявить передачу объекта в моей папке appCode продолжает выдавать мне сообщение об ошибке,

this member defined more than once
ambiguity between Submission.SubmissionId and Submission.SubmissionId

Эта ошибка генерируется для каждой переменной (CustId, BroId, Coverage). Я следовал модели, которую нашел в учебнике по синтаксису; это проблема? Код ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class Submission 
    {
        int SubmissionId;
        int CustId;
        int BroId;
        int Coverage;
        //Array Product[] products;

        public Submission() {}
        public int SubmissionId 
        {
            get { return SubmissionId; }
            set { SubmissionId = value; }
        }
        public int CustId
        {
            get { return CustId; }
            set { CustId = value; }
        }
        public int BroId
        {
            get { return BroId; }
            set { BroId = value; }
        }
        public int Coverage
        {
            get { return Coverage; }
            set { Coverage = value; }
        }
    } 

Ответы [ 7 ]

5 голосов
/ 26 мая 2011

Проблема в том, что вы даете одно и то же имя переменной и свойству.

Вы можете исправить это, дав им разные имена:

public class Submission 
{

    public Submission() {}

    private int submissionId;
    public int SubmissionId 
    { 
        get{ return this.submissionId; }
        set{ this.submissionId = value; }
    }

    private int custId ;
    public int CustId
    { 
        get{ return this.custId ; }
        set{ this.custId = value; }
    }

    private int broId ;
    public int BroId
    { 
        get{ return this.broId ; }
        set{ this.broId = value; }
    }

    private int coverage;
    public int Coverage
    { 
        get{ return this.coverage; }
        set{ this.coverage= value; }
    }


} 

Читать Какполя и свойства лучшего имени .


Кроме того, вы можете использовать Автоматически реализуемые свойства :

В C # 3.0 и более поздних версиях auto- реализованные свойства делают объявление свойства более кратким, когда в средствах доступа к свойствам не требуется никакой дополнительной логики.Они также позволяют клиентскому коду создавать объекты.

Вот и мы:

public class Submission 
{

    public Submission() {}

    public int SubmissionId { get; set; }

    public int CustId { get; set; }

    public int BroId { get; set; }

    public int Coverage { get; set; }

} 
3 голосов
/ 26 мая 2011

Вы даете своим публичным и частным пользователям одно и то же имя. Вы не можете этого сделать.
Вы можете указать префиксам, например, подчеркивание (_), всем вашим личным членам, как указано здесь .

Кроме того, если вы ничего особенного не делаете в своих свойствах, ответ @Akram Shahda - хорошее предложение

3 голосов
/ 26 мая 2011

Либо объявите свои свойства так:

private int _submissionId;
public int SubmissionId 
{
    get { return _submissionId; }
    set { _submissionId = value; }
}

или вы можете использовать Автоматически реализованные свойства (C # 3.0 или более поздняя версия, которые делают то же самое, но требуют меньше ввода)

public int SubmissionId { get; set; }
1 голос
/ 26 мая 2011

В этом случае у вас есть поле и свойство с одинаковым именем, это не допускается.

Стандартная реализация хранилища резервных копий будет выглядеть следующим образом.

private int _CustID;
public int CustId
{
     get { return _CustID; }
     set { _CustID= value; }
}

Если вы просто используете Свойства без логики get или set, воспользуйтесь автоматическими свойствами.

public int CustID {get;set;}
1 голос
/ 26 мая 2011

Вы назвали поле и свойство с одинаковым именем, которое вызывает ошибку.Вы должны переименовать поле, например, в submissionId.Кстати, в этом случае вообще нет необходимости определять поле.Используйте этот синтаксис свойства:

public int SubmissionId { get; set; }
1 голос
/ 26 мая 2011

Ваши личные и публичные имена участников совпадают.

измените ваше личное имя menbers на

 int _submissionId;
 int _custId;
 int _broId;
 int _coverage; 

, если вы используете Visual Studio 2008 или более позднюю версию, попробуйте

 public int SubmissionId { get; set; }
  public int CustId { get; set; }
  public int BroId { get; set; }
  public int Coverage { get; set; } 
0 голосов
/ 26 мая 2011

Да, в любом случае, как в коде вы дважды указали каждый из SubmissionId, CustId, BroId, Coverage.Почему так?Вы можете напрямую объявить собственность ниже.Удалить первое объявление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...