首页 新闻 会员 周边 捐助

c#在结构体中使用静态成员

0
悬赏园豆:15 [已解决问题] 解决于 2019-07-18 09:06

我只想存储几个常用的数据信息,且是只读的

public static class Wx
{
    public static string KId => "123456";
    public static string KCode => "abc";
}

public struct Wx2
{
    public static string KId => "123456";
    public static string KCode => "abc";
}

如果结构体和类中只存静态成员,调用方式一样,两者在性能上到底有没有区别?这种情况下,使用哪种更为合适?

简活的主页 简活 | 初学一级 | 园豆:162
提问于:2019-07-17 10:19
< >
分享
最佳答案
1

没有区别。 鉴于你的需求(只读,静态),可以使用常量。

public struct Wx3
{
public const String KId = "123456";
public const String KCode = "abc";
}

收获园豆:9
写代码的小2B | 老鸟四级 |园豆:4377 | 2019-07-17 16:24
其他回答(6)
0

struct 是值类型,在栈(stack)上分配内存;class 是引用类型,在堆(heap)上分配内存。

推荐阅读:Structs versus Classes in C#

dudu | 园豆:30948 (高人七级) | 2019-07-17 10:35
0

第一个应该会好用一点

.net小牛 | 园豆:202 (菜鸟二级) | 2019-07-17 10:41
0

首先,结构中保留的仅仅是exception的引用,只占4个字节,而真正分配内存是在堆上。所以你不用担心内存回收的问题。

再者,是不是应该用class? 
如果你使用struct,那么你要知道,因为其是值类型,struct类型的变量作参数时,传递的是拷贝。而如果使用class,则传递的仅仅是一个地址,4字节。所以,如果你的struct比较庞大,而且会经常用作参数,那你就要考虑使用class而不是struct了。

收获园豆:3
happydaily | 园豆:260 (菜鸟二级) | 2019-07-17 11:33
0

看具体情况吧,最好写代码测试下。我曾经写过一个程序,刚开始用class作为参数传递,后来改为了结构体,速度变快很多。不过如果是结构体,就无法多个变量指向同一个内存地址,如果存在大量重复的数据,还是类更好

收获园豆:3
会长 | 园豆:12463 (专家六级) | 2019-07-17 12:03
0

楼上正解,常量最好

刘下来 | 园豆:919 (小虾三级) | 2019-07-18 08:13
0

除非很特定的需求或是很明显的定义,否则不建议使用 struct

gt1987 | 园豆:1150 (小虾三级) | 2019-07-19 10:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册