您的位置:首页 > 游戏 > 手游 > 项目进度管理_网站制作联系_百度网页翻译_哪些网站推广不收费

项目进度管理_网站制作联系_百度网页翻译_哪些网站推广不收费

2025/3/2 0:28:30 来源:https://blog.csdn.net/qq_52373338/article/details/144741248  浏览:    关键词:项目进度管理_网站制作联系_百度网页翻译_哪些网站推广不收费
项目进度管理_网站制作联系_百度网页翻译_哪些网站推广不收费

1.类型

C#中类型分为两类:值类型和引用类型

1.值类型

所有值类型继承自System.ValueType类(这是System.Object的一个子类)

值类型变量是直接存储数据,值类型变量声明后,不管是否赋值,编译器都会为其分配内存,值类型一般存在栈区,内存是自动释放

值类型包括:

int char short long float double bool byted 结构体类型(struct关键字定义)

【注意:string是引用类型】

2.引用类型

所有引用类型继承自System.Object

变量持有的数据的引用,数据是存在堆区中,引用类型一般存在堆区,内存是由GC释放

引用类型包括:

string  所有可以实例化的类(class定义的)  dynamic

2.参数传递

1.string类型

这是一个非常特殊的引用类型,如果你直接传入参数如下:

该函数将传入的变量统一修改为指定的字符串

//这种写法,并不能修改函数外的变量的值
public void InitString(string str)
{str = "Init";
}

传入后,按引用类型的定义来说,这个str肯定被你修改成了"Init",但是很可惜,字符串类型是无法修改的,这样写虽然不会报错,但是功能是有问题的,这时候我们应该使用ref或者out关键字进行引用传递如下:

public void InitString(out string str)
{str = "Init";
}或者public void InitString(ref string str)
{str = "Init";
}

你或许会说,string类型这不就修改了吗?但是事实是string是不可变,无法修改的,只能新建,使用ref或者out时都是新建了字符串,然后引用指向了新的字符串

2.值传递

值类型作为参数时,如果并非引用传递,那使用的是该变量的一个副本(新建的临时变量)

3.引用传递

引用类型除了string外都可以直接作为参数,因为参数复制的是堆区地址,也就是数据的引用,所以修改对外部变量都有效

其次有 ref 和 out 两个关键字,他们定义的参数都可以引用传递,直接修改变量的值

教大家怎么记,

ref的意思是参考或者引用,

out就更好记了出去,所以是输出引用

使用

ref 必须要初始化,函数结束时值可以修改或不修改

out 不需要初始化,函数结束时值必须要修改

作用过程

ref是可以把被引用的值带入函数中使用的

out传入参数后,值会被清(即使该参数已经初始化过也一样)

实际应用

ref一般用于修改变量值或者是交换变量值,或者一些性能优化(使用引用可以使得传参途中不会新建变量)

//交换x和y的值
public void Swap(ref int x, ref int y)
{int temp = x;x = y;y = temp;
}

out一般用于函数返回值,C#中函数只能返回一个值,但是借助out这个输出引用,我们可以达到返回多个值的目的

// 方法定义,包含两个输出参数
public static void CalculateSumAndDifference(int a, int b, out int sum, out int difference)
{sum = a + b;difference = a - b;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com