关于C#:有没有理由不键入结构?

Is there any reason not to typedef a structure?

本问题已经有最佳答案,请猛点这里访问。

关于结构,有没有理由不使用typedef

像:

1
2
3
4
5
typedef struct{
    int member1;
    unsigned long member2;
    char *member3;
} myType;

而不是:

1
2
3
4
5
struct myType{
    int member1;
    unsigned long member2;
    char *member3;
};


通过typedef关键字,您可以写入

myType x;

如果没有它,你必须输入:

struct myType x;

因此,键入的内容要少一些,如果编写大型程序,这是必要的。

秒,一些人认为,如果使用typedef,可以对代码的用户隐藏实现。例如,您使用size_t类型,而不必知道它是如何定义的。


typedef可能会使调试变得困难,因为除非调试器足够智能地连接点,否则mytype的实例将显示为anonymous type。为了安全起见,我更喜欢同时做:

1
2
3
typedef struct tag_myType {
    ?
} myType;

然而,如果我不得不放弃其中的一个或另一个,我会为同样的理由,在任何地方写struct myType