C#创建具有重命名字段的结构体(继承或其他)的版本

问题描述:

假设我有一个C#结构体,其中我想创建一个功能等效的派生版本,但其中某些属性或函数已重命名。我如何才能最好地做到这一点,让派生版本不会更糟糕,避免代码在这个过程中重复?C#创建具有重命名字段的结构体(继承或其他)的版本

更具体地说,我有一个结构Vector3,它具有属性X,Y,Z和大量函数,并且希望将structLlaVec的属性名称更改为Longitude,Latitude和Altitude,可能还有文档这些属性改变了。

除了重复执行此结构以外,还有其他方法吗?

+0

你在找什么办法?什么东西自动确定“看,X是经久”? – Sinatr

+3

你不能继承c#中的结构体# –

+0

不 - 你必须以一种或另一种方式创建一个新的结构体。您可以提供用户定义的转换运算符,以便无缝地从'Vector3'到您的结构(反之亦然),但是如果这些转换频繁完成,那么这些转换会对性能产生影响。 –

不要使用继承,而要使用封装。

换句话说,创建一个新的类型来封装你拥有的结构,并将你的新函数或属性委托给包装结构的属性。

例如:

struct LlaVec 
{ 
    private readonly Vector3 _v; 

    public LlaVec(Vector3 v) 
    { 
     _v = v; 
    } 

    public int Altitude { get { return _v.Z; }} 
} 
+0

我想到了这一点,但担心退化的表现。这样的财产是否仍然内联? – user1282931

+0

当您有工作解决方案时,请关注性能。做到这一点。 2.让它工作。 3.使其正确工作。 4.让它工作得很快。 – Fildor