可以在C#Interactive上使用Immutable.Collections吗?

可以在C#Interactive上使用Immutable.Collections吗?,c#,visual-studio-2019,read-eval-print-loop,immutable-collections,C#,Visual Studio 2019,Read Eval Print Loop,Immutable Collections,我正在Visual Studio 2019上使用带有最新更新的C#Interactive窗口(即REPL)。我想使用不可变的集合,但无法使它们工作。(我在编译的C#项目中使用它们没有问题) 奇怪的是,如果我进入(C#交互式窗口): C#Interactive接受这一点,这意味着它可以看到名称空间。但如果我尝试使用它,例如: var a = ImmutableList.Create<int>(1,2,3); var a=ImmutableList.Create(1,2,3); 我收

我正在Visual Studio 2019上使用带有最新更新的C#Interactive窗口(即REPL)。我想使用不可变的集合,但无法使它们工作。(我在编译的C#项目中使用它们没有问题)

奇怪的是,如果我进入(C#交互式窗口):

C#Interactive接受这一点,这意味着它可以看到名称空间。但如果我尝试使用它,例如:

var a = ImmutableList.Create<int>(1,2,3);
var a=ImmutableList.Create(1,2,3);
我收到错误消息:“名称‘ImmutableList’在当前上下文中不存在。”如果我完全限定ImmutableList的名称,则没有区别


可能我不明白.NETC#Interactive的哪个版本是对的。我知道不可变的.Collections现在是.NETCore3中的本机集合,但也许C#Interactive不使用这个版本?(如何在C#Interactive中辨别/指定.NET版本?)。即便如此,它不反对using指令似乎有些奇怪。

您需要首先引用
System.Collections.Immutable
程序集。为此,请使用以下命令:

#r "System.Collections.Immutable.dll"

现在,您可以使用
System.Collections.Immutable
命名空间中的对象。

您需要首先引用
System.Collections.Immutable
程序集。为此,请使用以下命令:

#r "System.Collections.Immutable.dll"

现在,您可以在
System.Collections.Immutable
命名空间中使用该对象。

如果使用System.Collections.SomethingMadeUp输入
,该怎么办它接受吗?我已经试过了。它立即给出错误“类型或命名空间名称“SomethingMadeUp”不存在于…”请尝试首先使用
#r“System.Collections.Immutable.dll”
添加引用,如果使用System.Collections.SomethingMadeUp输入
,会发生什么它接受吗?我已经试过了。它会立即出现错误“类型或命名空间名称“SomethingMadeUp”不存在于…”请尝试首先使用
#r“System.Collections.Immutable.dll”添加引用。
您能否解释一下,即使没有添加引用,它为什么会接受using语句(当它拒绝使用SomethingMadeUp时)?不确定,我认为该名称空间中有一些内部对象。例如,如果您键入
System.Collections.Immutable.ImmutableArray
,它会告诉您“ImmutableArray”由于其保护级别而无法访问。但是,您能否解释一下,即使没有添加引用,为什么它也会接受using语句(当它拒绝使用某些东西时)?不确定,我认为该名称空间中有一些内部对象。例如,如果键入
System.Collections.Immutable.ImmutableArray
,它会告诉您“ImmutableArray”由于其保护级别而无法访问。