我已经看过这个问题,但我认为我的情况有所不同:What does it mean in Visual Studio debugger value "{ }"?
我不会看到大括号,而是我认为我看到了一种类型。无论如何,这就是我所看到的:
对于res
,我看到{System.Net.Http.StreamContent}。相反,我期望/希望看到的东西就像" [内容在这里]"。这就是我所说的:
var res = await client.PostAsync(endpoint, content);
有谁知道为什么它显示类型,以及如何解决这个问题? THX
答案 0 :(得分:2)
当您使用调试器时,它会对您正在查看的任何对象使用ToString()方法。所以如果你调试这段代码:
public void Debugging()
{
MyClass fancyVariable = new MyClass();
// debugging fancyVariable here
}
public class MyClass
{
public int val;
}
...调试'fancyVariable'只会说:{Namespace.MyClass}
但是!如果您将其更改为:
public class MyClass
{
public int val;
public override string ToString()
{
return "Value=" + this.val;
}
}
...然后当你“注意”那个变量时,调试会说“Value = 0”。
那么为什么使用{ClassName}进行调试?因为使用ToString()很难很好地表示很多类 - 要么是因为没有一种简单的方法可以快速简单地总结数据,要么因为获取这些信息会导致问题(或者因为它可能需要太长时间,或者因为它会导致功能问题。)StreamContent几乎所有这些问题 - 使用blurb表示并不容易,从流中提取数据可能需要一些时间,这可能会导致从流中拉出的功能问题。所以它只有一个返回其类名的ToString()。
如果您希望获得一些乐趣,请阅读一些内置的.NET类,并查看哪些在ToString()中呈现模糊,哪些在{Something.ClassName} < / p>
(这也是为什么你应该总是至少考虑为你编写的任何类覆盖ToString()方法的一个教训:使类的调试问题更容易。)
答案 1 :(得分:2)
我认为这可能是有意的。
你肯定会看到这种类型。 client.PostAsync方法的内容类型为System.Net.Http.HttpContent,特别是System.Net.Http.StreamContent。
如果Content类型是字符串,那么您可能会看到类似“Content string”的内容
为了阅读内容,您必须执行以下操作:
var contents = await res.Content.ReadAsStringAsync();
希望这有帮助!
https://msdn.microsoft.com/en-us/library/hh138242(v=vs.118).aspx
答案 2 :(得分:1)
对于res,我看到{System.Net.Http.StreamContent}。相反,我期望/希望看到的东西就像&#34; [内容在这里]&#34;。
但是res不是内容,它是一个System.Net.Http.StreamContent
对象,因此它告诉你想要它。 您无法更改这些类的工作方式。您要查找的值包含在内容中,但这是一个流,它并不总是具有已知状态,因此您无法真正查看它的值。