gpt4 book ai didi

c# - 针对未引用命名空间中定义的类型进行类型推断

转载 作者:行者123 更新时间:2023-11-30 22:01:56 24 4
gpt4 key购买 nike

给定一个定义如下的类和命名空间;

namespace Models
{
public class Foo
{
}
}

以及以下...

namespace Factories
{
using Models;

class FooFactory
{
public Foo GetFoo()
{
return new Foo();
}
}
}

最后……

namespace InferenceTest
{
using Factories;

class Program
{
static void Main()
{
Foo foo = new FooFactory().GetFoo();
}
}
}

如您所料,此代码无法编译并出现错误“找不到类型或命名空间名称‘Foo’(是否缺少 using 指令或程序集引用?)”

但是,如果我将行更改为...

var foo = new FooFactory().GetFoo();

然后它编译并运行得很好。

为什么会有这种差异?类型推断允许它查看命名空间中尚未导入的类型的原因是什么。命名空间只是语法糖吗?

最佳答案

var foo = new FooFactory().GetFoo(); 编译的原因很简单。编译器推断 foo 是 Models.Foo 类型而不仅仅是 Foo。
类似于 push Models.Foo foo2 = new FooFactory().GetFoo();.
请注意 Foo foo2 = new FooFactory().GetFoo(); 是不同的。

关于c# - 针对未引用命名空间中定义的类型进行类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com