簡體   English   中英

成員定義了不止一次的錯誤信息?

[英]Member defined more than once error message?

我在vs2010中使用c#,並學習oop; 我第一次嘗試在我的 appCode 文件夾中聲明 object 提交時不斷給我錯誤消息

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

每個變量(CustId、BroId、Coverage)都會引發此錯誤。 我遵循了在語法教程中找到的 model; 那是問題嗎? 下面的代碼:

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

問題是您為變量和屬性提供了相同的名稱。

您可以通過給它們不同的名稱來修復它:

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 及更高版本中,當屬性訪問器中不需要額外的邏輯時,自動實現的屬性使屬性聲明更加簡潔。 它們還使客戶端代碼能夠創建對象。

這里我們 go:

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

} 

要么像這樣聲明你的屬性:

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

或者您可以使用自動實現的屬性(C# 3.0 或更高版本,它們做同樣的事情但需要更少的輸入)

public int SubmissionId { get; set; }

您正在為您的公共和私人成員提供相同的名稱。 你不能那樣做。
您可以決定給所有私有成員一個前綴,例如下划線 (_),如此處所建議的

此外,如果您沒有在您的房產中做任何特別的事情,@Akram Shahda 的回答是一個很好的建議

您的私人和公共成員名稱相同。

將您的私人會員姓名更改為

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

您使用相同的名稱命名字段和屬性,這會導致錯誤。 例如,您應該將字段重命名為 submitId。 順便說一句,在這種情況下根本不需要定義字段。 使用此屬性語法:

public int SubmissionId { get; set; }

在這種情況下,您有一個字段和一個具有相同名稱的屬性,這是不允許的。

標准的后備存儲實現看起來像這樣。

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

如果您只是使用沒有獲取或設置邏輯的屬性,請利用自動屬性。

public int CustID {get;set;}

是的,無論你如何在代碼中聲明了 SubmissionId、CustId、BroId、Coverage 兩次都是正確的。 為什么會這樣? 你可以直接在下面聲明一個屬性。 刪除第一個聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM