gpt4 book ai didi

C# - 此声明的字符串是否被视为常量?

转载 作者:太空狗 更新时间:2023-10-29 21:07:39 28 4
gpt4 key购买 nike

帮我解决这里的争论。

这是:

SqlCommand cmd = new SqlCommand( "sql cmd", conn);

处理方式与此完全相同:

const string s = "sql cmd";
SqlCommand cmd = new SqlCommand( s, conn);

即。如果我特别声明字符串 s 是一个常量,这会有什么不同吗?

而且,如果不以同样的方式对待它,为什么不呢?

最佳答案

在后一个片段中,不是字符串 是常量——而是变量 是常量。这与 C++ 中的 const 不太一样。 (在 .NET 中,字符串始终是不可变的。)

是的,这两个片段做同样的事情。唯一的区别是,在第一种形式中,您还将拥有 s 的元数据条目,并且如果变量是在类型级别声明的(而不是局部变量),则其他方法可以也用它。当然,由于字符串实习,如果你在别处使用“sql cmd”,你在内存中仍然只有一个字符串 object ...但是如果你用反射查看类型,你会发现常量作为元数据中的一个字段,如果它被声明为一个常量字段,第二个片段,如果它只是一个局部变量,如果你构建一个,它将在 PDB 文件中。

关于C# - 此声明的字符串是否被视为常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531976/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com