-1

我编写了这段代码,但是,当我尝试构建时,编译器返回:

1>code.cs(16,16,16,44): error CS0542: 'DataGridViewPercentageColumn': member names cannot be the same as their enclosing type


using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using System.Windows.Forms;
using System.Linq;
using System.Xml.Linq;

namespace TestSample
{
    internal static class DataGridViewPercentageColumn
    {
        public class DataGridViewPercentageColumn : DataGridViewColumn
        {
            public DataGridViewPercentageColumn() : base(new DataGridViewPercentageCell())
            {
            }
        }

        public class DataGridViewPercentageCell : DataGridViewTextBoxCell
        {
            public DataGridViewPercentageCell()
            {
                this.Style.Format = "0%";
            }
        }
    }
}

我该如何解决这个问题,以及为什么会发生这个错误?

谢谢

4

3 回答 3

4

您不能嵌套两个具有相同名称的类。您的内部类 DataGridViewPercentageColumn 与外部类具有相同的名称。您必须重命名这些类之一,例如:

internal class DataGridViewClasses{
    public class DataGridViewPercentageColumn : DataGridViewColumn
    {
        public DataGridViewPercentageColumn() : base(new DataGridViewPercentageCell())
        {
        }
    }

    public class DataGridViewPercentageCell : DataGridViewTextBoxCell
    {
        public DataGridViewPercentageCell()
        {
            this.Style.Format = "0%";
        }
    }
}

顺便说一句:您不能在类中拥有任何其他成员或属性,该类的名称与该类本身类似。

于 2013-06-24T12:23:13.053 回答
3

您的包装类与内部类之一具有相同的名称。

问题是DataGridViewPercentageColumn

于 2013-06-24T12:21:26.360 回答
3

这里的问题是您在另一个类中定义了一个类,它们都具有相同的名称。给内部静态类一个不同的名字。

于 2013-06-24T12:22:40.530 回答