相关疑难解决方法(0)

静态只读与const

我已经阅读了各地conststatic readonly各个领域.我们有一些只包含常量值的类.用于我们系统中的各种事物.所以我想知道我的观察结果是否正确:

这些常量值是否应始终static readonly适用于所有公开的内容?并且仅const用于内部/受保护/私有值?

您有什么推荐的吗?我是否可能甚至不使用static readonly字段,而是使用属性?

c# constants

1349
推荐指数
14
解决办法
37万
查看次数

两个不同的"字符串"是同一个对象实例?

代码非常自我解释.我预计当我创建a1b1创建两个包含相同文本的不同字符串实例时.所以我a1 == b1认为这是真的但是object.ReferenceEquals(a1,b1)会是假的,但事实并非如此.为什么?

//make two seemingly different string instances
string a1 = "test";
string b1 = "test";         
Console.WriteLine(object.ReferenceEquals(a1, b1)); // prints True. why?

//explicitly "recreating" b2
string a2 = "test";
string b2 = "tes";
b2 += "t";    
Console.WriteLine(object.ReferenceEquals(a2, b2)); // prints False

//explicitly using new string constructor
string a3 = new string("test".ToCharArray());
string b3 = new string("test".ToCharArray());    
Console.WriteLine(object.ReferenceEquals(a3, b3)); // prints False
Run Code Online (Sandbox Code Playgroud)

c# string equality reference

19
推荐指数
2
解决办法
3619
查看次数

奇怪的字符串文字比较

深入了解C#,我遇到了一个与对象引用相等的小问题.我说我有两个字符串:

String a = "Hello world!";
String b = "Bonjour le monde";
bool equals = ReferenceEquals(a, b);  // ******************* (1)
b = "Hello world!";
equals = ReferenceEquals(a, b);       // ******************* (2)
Run Code Online (Sandbox Code Playgroud)

(1)false和那是预期的.ReferenceEquals 文档

ReferenceEquals比较实例

但是之后:

  • 为什么(2)会返回true
  • 字符串ab它们不是同一个对象吗?如果是,那么它们是如何变得相同的,因为我从未明确地做过a=b

c# string

16
推荐指数
3
解决办法
1701
查看次数

C#中的字符串内插

考虑C#中的以下代码片段

string s = "hi";
object k="hi".Substring(0);

// 1>
k==s // true

// 2>
Object.ReferenceEquals(s,k) //true
Run Code Online (Sandbox Code Playgroud)

但当,

Object k="hii".Substring(0,2);

// 1>
 k==s // false
// 2>
Object.ReferenceEquals(s,k) //false
Run Code Online (Sandbox Code Playgroud)

我很难理解为什么在第一种情况下,字符串被实习,而在第二种情况下没有发生.如果有人在c#中发生字符串实习时可以指出规则,那将是非常有帮助的.

c# string string-interning

5
推荐指数
0
解决办法
188
查看次数

标签 统计

c# ×4

string ×3

constants ×1

equality ×1

reference ×1

string-interning ×1