在c#中使用var真的那么糟糕吗?

Flo*_*aal 0 c# coding-style desktop-application

因此,我正在为我的同事创建一个连接库,以节省他当前项目的时间.我的同事将在他的c#应用程序中使用此库连接到其他api.在库中,我为每个请求创建了Handler(GET/POST/PUT/DEL).当他的应用程序与我的库进行对话时,我将返回如下响应:

return client.PostAsync(url, content).Result;
Run Code Online (Sandbox Code Playgroud)

这将从其余的api返回一个动态对象.

今天他使用我的图书馆,由于某种原因无法与他的应用程序结合使用.我告诉他使用var,它会像这样工作:

var x = API.CreateTraject(parameter1,parameter2);
Run Code Online (Sandbox Code Playgroud)

他拒绝使用var并最终花了大约40分钟来确定如何在没有它的情况下让它工作.然后他指责我返回一个动态对象并且他永远不会使用var因为明显更好所以他告诉我.

我正常作为移动开发人员(IOS/Android)工作,我一直使用var.

现在我的问题是:

使用var真的很糟糕吗?我应该在我的库中转换响应,以便他可以在他的应用程序中明确键入它吗?在我看来,我宁愿使用var并节省一些时间,然后花40分钟尝试去明确.

Ree*_*sey 12

使用var真的很糟糕吗?我应该在我的库中转换响应,以便他可以在他的应用程序中明确键入它吗?在我看来,我宁愿使用var并节省一些时间,然后花40分钟尝试去明确.

var在C#中,它只是一个编译器"技巧".没有涉及动态类型,编译的代码完全相同.将鼠标悬停在变量上时,IDE将告诉您使用的"真实"类型.

无论他使用的var还是您的实际返回类型,在创建库的方面都不重要.

如果您的图书馆dynamic 不必要地返回,这可能是一个不同的问题,并且用户可能有有效的投诉.与var(仅仅是编译时技巧)不同,dynamic确实会显着改变行为.

或者,如果您从库中返回匿名类型,则可能需要考虑为您的值创建一个实际的类.匿名类型实际上只是在本地范围内使用,不应该是任何公共API的一部分.

  • @FlorianSchaal如果你正在返回动态,var将只是"动态" - var只是说"使用任何用来初始化我的类型". (2认同)