"is" 类型测试是否使用声明模式中断对 C# 中元素的引用
Does "is" type test with declaration pattern break reference to element in C#
假设我有一个函数可以改变 属性 这样的对象:
private void SetTagsInChildren(List<string> tags, Model model)
{
ContentModel contentModelV1;
if (model is ContentModel contentModel)
contentModelV1 = contentModel;
// Logic to set new tags in model
}
is
类型检查(或之后的赋值)后新变量 contentModel 的声明是否会破坏对原始模型参数的引用?对 contentModel
或 contentModelV1
所做的调整是否在传递给函数的原始模型上可见?
如果model
是引用类型则is
执行引用转换(如果匹配成功)。引用转换只转换引用的静态类型(变量的编译时类型),它“指向”的运行时对象完全相同。
假设我有一个函数可以改变 属性 这样的对象:
private void SetTagsInChildren(List<string> tags, Model model)
{
ContentModel contentModelV1;
if (model is ContentModel contentModel)
contentModelV1 = contentModel;
// Logic to set new tags in model
}
is
类型检查(或之后的赋值)后新变量 contentModel 的声明是否会破坏对原始模型参数的引用?对 contentModel
或 contentModelV1
所做的调整是否在传递给函数的原始模型上可见?
如果model
是引用类型则is
执行引用转换(如果匹配成功)。引用转换只转换引用的静态类型(变量的编译时类型),它“指向”的运行时对象完全相同。