![](/img/trans.png)
[英]Warning: Field is never assigned to, and will always have its default value null
[英]Struct in c# giving warning Field is never assigned to,and will always have its default value0
我有非常简单的结构如下:
public struct ShFileInfo
{
public int hIcon;
public int iIcon;
public int dwAttributes;
}
我已将警告设为错误 。 现在为所有三个int
获取错误
字段永远不会分配给,并且始终具有默认值0
显然,如果我尝试将int
初始化为0
我将收到错误。 有没有办法处理这个没有禁用警告为错误。
您可以像这样为Struct定义构造函数
public struct ShFileInfo
{
public int hIcon;
public int iIcon;
public int dwAttributes;
public ShFileInfo(int x,int y, int z)
{
hIcon = x;
iIcon = y;
dwAttributes = z;
}
}
您也可以使用只有一个参数的构造函数并初始化all
public ShFileInfo(int x)
{
hIcon = x;
iIcon = 0;
dwAttributes = 0;
}
如果你的结构在内部类中,那么你就会得到这个转换
internal class WrapperClass
{
public struct ShFileInfo
{
public int hIcon;
public int iIcon;
public int dwAttributes;
}
}
当您将内部访问权限更改为public时,警告就会消失:
public class WrapperClass
{
public struct ShFileInfo
{
public int hIcon;
public int iIcon;
public int dwAttributes;
}
}
由于您仅将此结构用于P / Invoke,因此我只需在本地禁用警告:
#pragma warning disable 0649
public struct ShFileInfo
{
public int hIcon;
public int iIcon;
public int dwAttributes;
}
#pragma warning restore 0649
编译器无法知道您的结构是在非托管代码中分配的,但是因为您知道,简单地禁用警告几乎没有什么坏处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.