【问题标题】:by default , function parameters are value type in c#默认情况下,函数参数是 C# 中的值类型
【发布时间】:2016-10-18 16:22:07
【问题描述】:

朋友们,我在网上看了几篇文章,才知道默认情况下,函数参数在c#中是值类型。有什么方法可以验证吗?

请推荐一段代码或任何网络参考。

【问题讨论】:

  • 两者都不是,或者更确切地说,这不是 .NET 的工作方式。 类型 是引用或值类型,这意味着它们是通过引用或值传递的。字符串是引用类型,而Int32 是值类型。您可以使用 ref 关键字通过引用传递值类型,但这并不常见
  • @PanagiotisKanavos 参考类型are not passed by reference!
  • @MAV 传递的是对数据的引用,而不是数据本身。这就是这个问题是关于链接答案所说的。
  • @PanagiotisKanavos 是的。但是引用是按值传递的。说引用类型通过引用传递是不正确的。 “通过引用传递”具有特定含义。我提出它的唯一原因是因为我看到很多初学者对 refout 关键字感到困惑,因为人们一直告诉他们引用类型是通过引用传递的。

标签: c#-4.0


【解决方案1】:

c# 中的类型可以是值类型或引用类型。因此,在传递参数时,您可以使用 out、array、ref 关键字将其作为变量(值类型)或引用类型传递。

//Value type
sum(a,b);
//reference type
sum(out a,out b);

简单来说,引用变化反映在变量的整个范围内,但对于值类型,它在函数范围内。 总而言之,如果你不指定参数的类型(默认),那么它们是值类型,否则根据类型say out 或 ref ,它们是引用类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2011-12-27
    • 2012-01-18
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多