所以我对泛型类和方法有所了解。 但是当我这样看时,它仍然没有得到语法。
private async Task<JsonValue> GetJsonDoc(string url)
答案 0 :(得分:3)
它定义泛型类型存储,使用或返回的类型(在本例中为Task
)。因此,方法GetJsonDoc
会返回Task
,它会在运行并完成时返回JsonValue
。
答案 1 :(得分:0)
在您的情况下,<JsonValue>
是任务将返回的类型。例如,如果您在此处有<Int32>
,则您的任务将返回一个整数值。
阅读here的良好来源。
返回字符串值的一个非常基本的示例:
private static async Task<string> MyNewTask()
{
int timer;
for (timer = 0; timer < 10; timer++)
{
Console.WriteLine(timer);
}
return "Time left = " + timer;
}
您可以从上面的示例中看到,作为运行任务的结果,返回了一个字符串值。
在上面的示例中,任务将字符串作为参数,并返回JsonValue类型对象。
希望这有帮助。
答案 2 :(得分:0)
这表示“通用”类。
当类需要包含另一个类的对象时,使用泛型。
例如,List<string>
是包含字符串对象的列表对象。
Task<JsonValue>
是Task
,其中Result
属性的类型为JsonValue
。
在引入泛型之前,通过存储类型为“object”的引用来实现功能。这可以在旧的集合类中看到(所以List
而不是List<T>
)。
与简单地存储对象相比,泛型解决了两个主要缺点:
int
,string
等基本类型可以由object
表示,但实际上并不是它们在内存中的表示方式。因此,当它们转换为object
或从{{1}}转换时,它需要处理时间和内存。这被称为“拳击”和“拆箱”。通常,在进行基本编程时,您不需要创建自己的泛型类 - 您只需使用其他人编写的类。如果您创建将由其他程序员使用的类,那么它可能是一项有用的技能。