[英]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.