为什么编译器会标记我对传递参数使用关键字 in ? (C# v9.0)

问题描述 投票:0回答:1

这是我的方法调用:

   var span = m_tracer.StartActiveSpan("FileTrace", SpanKind.Internal, in parentContext, null, null, startTime);

方法签名定义如下:

public TelemetrySpan StartActiveSpan(
    string name,
    SpanKind kind = SpanKind.Internal,
    in SpanContext parentContext = default,
    SpanAttributes? initialAttributes = null,
    IEnumerable<Link>? links = null,
    DateTimeOffset startTime = default)

如您所见,第三个参数用 in 限定符修饰。我必须遵守。编辑没有抱怨-

enter image description here

但是当我编译时,结果是这样的:

enter image description here

我把 #error 版本放在那里,这样你就可以看到我正在使用的编译器版本。 v9.0。 (我在 v7.3 中也遇到了同样的错误。)由于 in 关键字是在 C# v7.2 中引入的,我无法理解这个编译器错误。感谢您提供的任何建议。

c# parameter-passing
1个回答
0
投票

in
参数修改器

方法声明中需要 in 修饰符,但在调用站点中不需要。

您只需删除该行的

in
即可。

© www.soinside.com 2019 - 2024. All rights reserved.