Difference between "var objectName= new SomeObject()&qu
本文关键字:SomeObject new qu objectName between quot var Difference | 更新日期: 2023-09-27 18:06:31
我正在通过resharper的代码检查做一些代码分析,我得到了下一个警告:
只使用属性'propertyname'的实现
这个警告我有在我的界面,如果我谷歌我发现这个页面的jetbrains:http://confluence.jetbrains.com/display/ReSharper/Only + +地产+是+ +实现使用
这对我一点帮助都没有,因为那样我就没有接口了…
所以我开始测试如何去掉这个警告。在以下虚拟接口和类上:
public interface ITest
{
string Name { get; set; }
}
public class Test: ITest
{
public string Name { get; set; }
}
如果我使用:
var newTest = new Test();
newTest.Name= "newName";
则出现警告。但是当我使用下一行时,警告会消失。
ITest newTest = new Test();
newTest.Name = "newName";
我不是一个界面忍者,所以我想知道,这两种方式有什么区别…?
谢谢!
由此推断出具体类型:
//X is of type X
var x = new X();
//X is of type IX
IX x = new X();
我猜如果你写
,警告仍然会出现。//X is of type X
X x = new X();
下面的命令是否也会删除警告?
public void TestX()
{
//X is of type X
var x = new X();
UseIX(x);
}
public void UseIX(IX interfaceParam)
{
interfaceParam.Foo = 1;
}
var newTest = newTest()将设置newTest的类型为Test。ITest newTest = newTest()将设置newTest的类型为ittest。
所以对于前者,ITest是不需要的,因为它从来没有被使用过。
所以resharper只是说你不需要ITest。你是否同意由你决定。你需要ITest吗?