[英]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.