本周早些时候,C#7.2发布了"in"参数修饰符的新功能,请参阅此处的发行说明
发行说明中提供的详细信息包括:"参数的修饰符,用于指定参数通过引用传递但不被调用方法修改."
关于这个新功能还没有很多文档,所以我一直在尝试.似乎对原始类型按预期工作,并阻止访问对象属性.但是,对于列表,您仍然可以调用方法来修改List(即添加,删除,反向),您可以直接修改元素.
static void Main(string[] args)
{
var test = new List<int>();
test.Add(5);
Console.WriteLine(test[0]);
TestMethod(test);
Console.WriteLine(test[0]);
}
public static void TestMethod(in List<int> myList)
{
myList[0] = 10;
myList.Add(7);
myList.Remove(2);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么在使用"in"参数修饰符时仍然可以修改集合?
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |