C#类属性定义

本文关键字:定义 属性 | 更新日期: 2023-09-27 18:23:36

如果我像下面的代码那样使所有类属性成为结构成员,我会产生任何问题吗?

    private struct Properties
    {
        public int p1;
        public int p2;
    }
    private Properties P;
    public int p1 { get { return P.p1; } set { P.p1 = value; } }
    public int p2 { get { return P.p2; } set { P.p2 = value; } }

多年来,我一直在VB中做类似的事情,但速度并不重要。现在,我才刚刚开始在速度很重要的实时项目中使用C#。感谢您的反馈!

C#类属性定义

是。问题将是不必要的代码。你可以像这样缩短你的代码,它的功能仍然是一样的:

public int p1 { get;set; }
public int p2 { get;set; }

如果你想在getter或setter上设置断点,你可以使用一个支持私有字段,比如:

private int _p1;
public int P1
{
    get { return _p1; }
    set { _p1 = value; }
}
private int _p2;
public int P2
{
    get { return _p2; }
    set { _p2 = value; }
}

老实说,我认为您的方法不会产生任何问题。如果你的属性中有一个小的额外结构,速度和内存绝对不是问题——除非你在只有64K Ram左右的设备上运行程序,但我认为你没有
因此,对于您的问题,如果您知道自己在做什么并访问正确的结构变量,那么您的代码就可以了。

然而,如上所述,您的方法远非最佳实践
C#是一种广泛使用Auto Properties或具有底层支持字段的Properties的语言,如果遵循这种结构,它被认为是最佳实践,也是最佳可维护性。

属性也有很多巧妙的优势-此链接下的更多信息:
MSDN属性教程

因此,总之,您的方法不一定是错误缓慢,它根本不是最佳实践。因为我们鼓励最佳实践,所以我鼓励您不要使用您的方法。