gpt4 book ai didi

c# - 返回一个常量字符串数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:01 24 4
gpt4 key购买 nike

我创建了一个 string[] getter 来获取类的一些信息。我希望它始终返回相同的值,而不是在每次调用时创建新对象。

我现在是这样实现的:

string[] _someStrings = { "foo", "bar" };
protected string[] someStrings {
get {
return _someStrings;
}
}

这似乎没问题。然而,我的第一个想法是这样写:

protected string[] someStrings {
get {
return { "foo", "bar" };
}
}

但这不起作用(我收到错误 ; expected)。

为什么?

(这主要是一个“了解 C# 的问题”)。

更新 我打错了。我不想在每次调用时都创建一个新对象。

最佳答案

正确的语法应该是这样的:

return new [] { "foo", "bar" };

原因是没有new []的短语法只对赋值有效。

正如您在评论中正确指出的那样,这将在每次调用时创建一个新对象。避免这种情况的唯一方法是使用一个字段来存储创建的实例并返回该字段。这正是您已有的解决方案。
但是请注意,这允许消费者更改数组的内容并影响其他消费者:

var a1 = foo.SomeStrings;
var a2 = foo.SomeStrings;
a1[0] = "Some other value";
Assert.Equal("Some other value", a2[0]); // will pass

关于c# - 返回一个常量字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103868/

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