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";

我不是一个界面忍者,所以我想知道,这两种方式有什么区别…?

谢谢!

Difference between "var objectName= new SomeObject()&qu

由此推断出具体类型:

//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吗?