内部Clear()方法的C#结构

时间:2011-09-20 12:36:12

标签: c# methods structure clear internal

我想简单地构建商店信息。我的问题是创建清除存储值的内部方法。

   public struct GraphValues
   {
        public int min, max, ...;

        public GraphValues(int min, int max, ...)
        {
            this.min = min;
            this.max = max;
            ...
        }

        public static void Clear(this GraphValues values)
        {
            values.min.Equals(null);
            values.max.Equals(null);
            ...
        }
    }

所以在这个结构中写新值是可以的,

GraphValues val = new GraphValues()
val.max = 12;
val.min = 1;

但我想将所有结构值设置为 null 。调用类似

的内容
val.Clear();

有什么想法吗? Thnaks

2 个答案:

答案 0 :(得分:7)

  1. 结构不应该是可变的。改为使你的类型成为一个类。
  2. 要允许空值,请使用可空类型。
  3. 使用属性而不是公共字段。
  4. 固定代码:

    public class GraphValues
    {
         public int? Min { get; set; } 
         public int? Max { get; set; }
         // etc...
    
         public void Clear()
         {
             Min = null;
             Max = null;
             // etc...
         }
    }
    

    我还建议你考虑创建一个新对象是否更好,而不是将现有对象上的字段设置为null:

    //val.Clear();           // Don't do this.
    val = new GraphValues(); // Just create a new object.
    

答案 1 :(得分:2)

static方法定义中删除“Clear()”关键字,以便它可用于GraphValues对象的每个实例。此外,无需传递参数 - 在Clear()方法内,您可以访问所有成员。并且您希望设置为null,而不是将它们的值与null进行比较。

    public void Clear()
    {
        this.min = null;
        this.max = null;
        ...
    }

为什么这个结构呢?只需使用课程。