如果它们都是引用类型,为什么将字符串传递给方法的行为与 List<object> 不同?

微信公众号

我正在阅读一段让我停在某行的代码:

List<object> props = new List<object>();
DoWork(param1, param2, props);
//props.Count grew up

我以为在其范围之外更改变量需要将其作为outor传递ref,但后来我意识到除非该DoWork方法更改props引用,例如:

props = new List<object>();

引用将指向同一位置。所以这里没有必要使用ref

然后我创建了一个string类型的方法

static void ChangeMe(string str)
{
    str = "W77";
}
public static void Main(string[] args)
{
    string str = "p1";
    ChangeMe(str);
    //str is still "p1"
}

如果行为促使 List 在其范围之外更改是它的引用类型,string那么如果它没有在被调用方方法中重新分配并且它是一个引用类型,为什么不改变List<object>

吉拉德格林

原因是因为它stringC# 中不可变类型,因此每当您“更改”它时,您实际所做的就是string使用新值创建一个新值并引用它。

调用时ChangeMe会创建对同一字符串的新引用。然后在该方法中,您将新引用引用到一个全新的字符串,它不会影响Main.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

object.ReferenceEquals的行为不同

来自分类Dev

DRF 在“list”和“get_object”上显示不同的字段

来自分类Java

为什么Object和var变量的行为不同?

来自分类Dev

为什么Object.keys()和for ...不同?

来自分类Dev

(TypeError:预期的字符串或类似字节的对象)为什么如果我的变量存储了我的数据(字符串),它们会显示为不同的类型?

来自分类Dev

为什么 asarray 和 list 反应不同?

来自分类Java

将类型Object转换为List <Object>

来自分类Dev

UIPath-将list <Object>转换为字符串

来自分类Dev

将List <KeyValuePair <字符串,字符串>>传递给WebService的麻烦是什么?

来自分类Dev

Blazor - SetParameters - 为什么字符串参数绑定的行为与复杂类型不同

来自分类Dev

Swift Object Mapper 传递不同的日期

来自分类Dev

在Kotlin中返回不同类型的Object

来自分类Java

为什么List <Number>不是List <Object>的子类型?

来自分类Dev

“ []”和“ list()”的行为有何不同?

来自分类Dev

为什么(object)0 ==(object)0与((object)0).Equals((object)0)不同?

来自分类Dev

为什么要字符串interned但引用不同?

来自分类Dev

与List <List <double >>不同

来自分类Dev

将List <List <object >>转换为List <List <string >>

来自分类Dev

为什么“ initializer_list <pair>”和“ initializer_list <tuple>”的行为不同?

来自分类Dev

类型 'List<Object?>' 不是类型 'List<Object>?' 的子类型 '价值'

来自分类Java

将List <Object>转换为List <CustomClass>

来自分类Dev

在类之间传递List <Object>

来自分类Dev

如何将 List<Object> 对象传递给构造函数参数(Object object1、Object object2)?

来自分类Java

如果我有一个(Object ...),为什么Java不调用(List <Object>)方法?

来自分类Dev

获取空的 List<object> 类型

来自分类Dev

是否可以在List上添加不同类型的对象(子类类型)(如果List的类型是它们的公共超类)?

来自分类Java

List <Object []>和List <Object>有什么区别?

来自分类Dev

将List <object>转换为Objects的类:List <object>

来自分类Dev

如何将 Future<List<Object>> 转换为 List<Object>?

Related 相关文章

  1. 1

    object.ReferenceEquals的行为不同

  2. 2

    DRF 在“list”和“get_object”上显示不同的字段

  3. 3

    为什么Object和var变量的行为不同?

  4. 4

    为什么Object.keys()和for ...不同?

  5. 5

    (TypeError:预期的字符串或类似字节的对象)为什么如果我的变量存储了我的数据(字符串),它们会显示为不同的类型?

  6. 6

    为什么 asarray 和 list 反应不同?

  7. 7

    将类型Object转换为List <Object>

  8. 8

    UIPath-将list <Object>转换为字符串

  9. 9

    将List <KeyValuePair <字符串,字符串>>传递给WebService的麻烦是什么?

  10. 10

    Blazor - SetParameters - 为什么字符串参数绑定的行为与复杂类型不同

  11. 11

    Swift Object Mapper 传递不同的日期

  12. 12

    在Kotlin中返回不同类型的Object

  13. 13

    为什么List <Number>不是List <Object>的子类型?

  14. 14

    “ []”和“ list()”的行为有何不同?

  15. 15

    为什么(object)0 ==(object)0与((object)0).Equals((object)0)不同?

  16. 16

    为什么要字符串interned但引用不同?

  17. 17

    与List <List <double >>不同

  18. 18

    将List <List <object >>转换为List <List <string >>

  19. 19

    为什么“ initializer_list <pair>”和“ initializer_list <tuple>”的行为不同?

  20. 20

    类型 'List<Object?>' 不是类型 'List<Object>?' 的子类型 '价值'

  21. 21

    将List <Object>转换为List <CustomClass>

  22. 22

    在类之间传递List <Object>

  23. 23

    如何将 List<Object> 对象传递给构造函数参数(Object object1、Object object2)?

  24. 24

    如果我有一个(Object ...),为什么Java不调用(List <Object>)方法?

  25. 25

    获取空的 List<object> 类型

  26. 26

    是否可以在List上添加不同类型的对象(子类类型)(如果List的类型是它们的公共超类)?

  27. 27

    List <Object []>和List <Object>有什么区别?

  28. 28

    将List <object>转换为Objects的类:List <object>

  29. 29

    如何将 Future<List<Object>> 转换为 List<Object>?

热门标签

归档