我最近將一個VB類轉換爲C#,它似乎遇到了問題;我想我知道如何解決這個問題,但是隨着我的閱讀,我現在正在尋找一個更明確的答案和指導。 考慮下面的代碼和一個結構FileDetail裏面(這只是一個例子 - 所以請不要假設它是FileDetail在文件..) 結構需要在內部和外部訪問 - 它們是通過值傳遞,而不是參考類型如此struct似乎是去這裏而不是類的方式(查看整個代碼)。在表單類MyForm中,我得到了類IAFT中不存在FileDetails的錯誤。在其他類的類內部使用Structs
public class IAFT
{
public struct FileDetail
{
public string FileType;
public int FileNumber;
}
}
public class MyForm
{
MyForm()
{
public IAFT.FileDetail fd = new IAFT.FileDetail();
// IAFT.FileDetail
}
}
錯誤我得到了。 類型名稱'FileDetail'在類型'IAFT'(CS0426)中不存在 VS2013中的紅色波形處於類型聲明中;作業的左側。
兩者在相同的命名空間,如果這是任何幫助。
我已經閱讀了關於SO的帖子,告訴我我可以像上面那樣聲明我的變量fd(因爲我沒有實例,所以對我沒有意義 - 但我試過了。)我不想創建一個實例來獲取實例;我相信我想要那個在IAFT實例中存在的那個。也許有一些我不理解。
我應該將結構封裝爲類嗎? 我應該把這個結構放在IAFT類之外嗎? [這就是我在想我應該做的事。]
我應該做點什麼嗎?
IAFT必須是靜態的,您不必實際創建一個實例訪問它。 – user3953989
如果您需要從其他類訪問它,則不應將其封裝在另一個類中。自己拉出來。 –
如果你讓你的'MyForm' ctor公開,並刪除ctor內的'public'關鍵字,這實際上編譯和運行,就像它不可取。 – Jonesopolis