成员定义了多次错误消息?

问题描述

| 我在vs2010中使用c#,并学习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; }
        }
    } 
    

解决方法

问题是您给变量和属性使用了相同的名称。 您可以通过给他们使用不同的名称来解决此问题:
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和更高版本中,自动实现   属性进行属性声明   没有其他逻辑时更加简洁   在属性访问器中是必需的。   它们还使客户端代码能够创建   对象。 开始了:
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的答案是一个很好的建议     ,您使用相同的名称命名字段和属性,这会导致错误。 您可以将字段重命名为例如SubmittingId。 顺便说一句,在这种情况下根本不需要定义字段。使用此属性语法:
public int SubmissionId { get; set; }
    ,在这种情况下,您将拥有一个字段和一个具有相同名称的属性,这是不允许的。 标准后备存储实现将如下所示。
private int _CustID;
public int CustId
{
     get { return _CustID; }
     set { _CustID= value; }
}
如果仅使用没有获取或设置逻辑的属性,请利用自动属性。
public int CustID {get;set;}
    ,您的私人和公共成员名称相同。 将您的私人会员名称更改为
 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; } 
    ,是的,无论您在代码中如何两次声明两次SubmissionId,CustId,BroId,Coverage都正确。为什么会这样呢?您可以直接在下面声明属性。删除第一个声明。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...