48 lines
1.1 KiB
Markdown
48 lines
1.1 KiB
Markdown
通常用法:
|
||
解决值[[值类型和引用类型]]在函数内外部互相传递时的问题
|
||
函数内部改外部传入也改
|
||
==ref和out的区别:==
|
||
ref:
|
||
- 传入的参数必须初始化(赋值)
|
||
- 方法内可读可写
|
||
out:
|
||
- 传入前**可以不初始化**
|
||
- 方法内**必须赋值**,否则编译报错
|
||
|
||
语法:
|
||
在函数传参时,两边都要加上修饰词
|
||
ref:
|
||
```Csharp
|
||
//交换数字
|
||
void Swap(ref int a, ref int b)
|
||
{
|
||
int temp = a; a = b; b = temp;
|
||
}
|
||
```
|
||
out:
|
||
```Csharp
|
||
//最经典:int.TryParse
|
||
if (int.TryParse(Console.ReadLine(), out int value))
|
||
Console.WriteLine(value % 2 == 0 ? "even" : "odd");
|
||
//int.TryParse伪代码
|
||
//bool ReadConfig(string key, out string value)
|
||
//{
|
||
// if (配置存在)
|
||
// {
|
||
// value = 读取到的值; return true;
|
||
// }
|
||
// else
|
||
// {
|
||
// value = null; return false;
|
||
// }
|
||
//}
|
||
```
|
||
案例:
|
||
原型在[[值类型和引用类型]]笔记中
|
||
|
||
注意:
|
||
==out不是用来让内外值一定不等==
|
||
==ref传入的参数必须初始化==
|
||
如果传入引用类型且内外不同,推荐new一个
|
||
|
||
#基础 |