c#string为传值模式
闲的无聊,记忆中好像是在c/c++语言中string为传址模式(函数修改参数时会影响原来的string参数值),比较好奇c#下对于string参数到底是传值还是传址有些疑问,便亲自测试。
1、结果aa仍然为test,没有被调用函数改变。string 改成String,也不行,没被当作普通对象,而是视为基本值类型模式。因此string传参为传值模式
[TestMethod]
public void TestMethod1()
{
string aa = "test";
ChangeValue(aa);
Assert.AreEqual(aa, "testchange");
}
private void ChangeValue(string bb)
{
bb = bb+"change";
}
2、而用其他对象测试发现为传址模式,原有值被改变。
public void TestMethod1()
{
var aa = new List<String>();
aa.Add("test");
ChangeValue(aa);
Assert.AreEqual(aa[0], "testchange");
}
private void ChangeValue(List<String> bb)
{
bb[0]=bb[0]+"change";
}
c#string为传值模式的更多相关文章
- JAVA的String的传值和传地址问题
关于Java的String类型,可能你会碰到这种情况,将String类型的变量传到一个函数,在这个函数中修改变量的值,但是,实参的值并没有发生改变. Java中String的传值/传地址问题: 例子引 ...
- String类型传值以及对象传值
package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void mai ...
- Spring中的工厂模式和单例模式
Spring预备知识(适合中小型项目) 作用:集成和管理其他框架 工厂模式: A a = new A( ); 将类所要创建的对象写入工厂,统一进行管理 package com.spring; pu ...
- 设计模式之Composite模式(笔记)
组合模式:将对象组合成树形结构以表示"部分-总体"的层次结构. 组合模式使得用户对单个对象和组合对象的使用具有一致性. 适用场合:当需求中是体现部分与总体层次的结构时,以及希望用户 ...
- C#学习笔记-工厂模式
题目:计算器 解析:工厂方法(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类. 定义运算类: class Operation { ; ; public doubl ...
- C#学习笔记-建造者模式
题目:用程序画一个小人. 实现: public partial class Form1 : Form { public Form1() { InitializeComponent(); } priva ...
- linkin大话设计模式--建造模式
linkin大话设计模式--建造模式 建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 建造模式的结构: 抽象建造者 ...
- angular js $post,$get请求传值
困扰了我好几天的问题!!! 刚开始学play框架,在向后台传值时,一直不成功! 当你用$POST传递一个参数时: HTML: <button ng-click=test()>测试</ ...
- Java单例模式之饿汉模式与懒汉模式
单例模式是我们在开发软件的过程中经常用到的23中常用的java模式之一,主要的功能就是保证我们所使用的对象只有一个,这也在一方面减少了出错的可能性,增强了代码的健壮.单例模式一般来说有两种实现的方式, ...
随机推荐
- 3-1 vue-resource基础介绍
1.静态引用 <script src="https://cdn.bootcss.com/vue-resource/1.3.4/vue-resource.js">< ...
- ubuntu 14.04 升级到 16.04 问题总结
1. 需要的依赖关系未安装 The required dependency 'apt (>= 1.0.1ubuntu2.13)' is not installed. http://forum.u ...
- 以太网端口二种链路类型:Access 和Trunk
Access 类型的端口:只能属于1 个VLAN,一般用于连接计算机的端口: Trunk 类型的端口:可以允许多个VLAN 通过,可以接收和发送多个VLAN 的报文,一般用于交换机之间连接的端口 ...
- 链表的基础题目学习(EPI)
链表的题目总体来说细节比较多,因为链表的题目在操作链表的过程中本身有些复杂,所以如果链表作为编程题出现的时候,多数情况下题目本身的思路可能不是很复杂,不要把题目往复杂的方向去思考就好了~这里的链表只是 ...
- iOS - 国际化语言切换
iOS国际化:如何切换语言 1.国际化就是将标签.提示信息等信息放到资源文件中,随着程序需要的语言提供对应的资源文件.以key/value对存储,每个资源的key值不变,value随着需求改变. ...
- markdown公式编辑参考
原文作者,https://www.cnblogs.com/q735613050/p/7253073.html
- Centos7.2修改时区
设置时区同样, 在 CentOS 7 中, 引入了一个叫 timedatectl 的设置设置程序. 用法很简单: # timedatectl # 查看系统时间方面的各种状态 Local time: 四 ...
- 洛谷P2569 股票交易【dp】【单调队列】
题目描述 最近 \text{lxhgww}lxhgww 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,\text{lxhgww}lxhgww 预测到了 ...
- 一些常用的opencv函数
分配图像空间: IplImage* cvCreateImage(CvSize size, int depth, int channels); size: cvSize(width,hei ...
- Python 文件内容读取
# 读取数据的函数 def readData(filename): with open(filename, 'r') as f: data = f.read().lower() data = list ...