Я недавно преобразовал класс VB в C#, и, похоже, у меня возникла проблема; Я думаю, что знаю, как это решить, но со всем моим чтением. Теперь я ищу более четкий ответ с руководством. Рассмотрим следующий код со структурой FileDetail внутри (это просто пример - поэтому, пожалуйста, не предполагайте, что это FileDetail, как в файлах ..) Доступ к структуре должен осуществляться изнутри и снаружи - они передаются по значению, а не по ссылке типы, поэтому struct, похоже, является способом перехода сюда вместо класса (смотря на весь код). В классе формы MyForm я получаю ошибку, что FileDetails не существует в классе IAFT.Использование структур внутри классов из других классов
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) Красный squigly в VS2013 находится под объявлением типа; левой стороны задания.
Оба находятся в одном и том же пространстве имен, если это какая-либо помощь.
Я прочитал сообщения на SO, которые говорят мне, что я могу объявить переменную fd так же, как она выше (не имеет смысла для меня, поскольку у меня нет экземпляра, но я попробовал). Я не хочу создавать экземпляр для получения экземпляра; Я считаю, что я хочу, чтобы он существовал внутри экземпляра IAFT. Может быть, я чего-то не понимаю.
Должен ли я инкапсулировать структуру как класс? Должен ли я помещать структуру вне класса IAFT? [Это то, что я думал, что должен делать.]
Должен ли я сделать что-то еще?
МОФТ должен быть статическим для вас получить к нему доступ без фактического создания экземпляра одного. – user3953989
Если вам нужно получить к нему доступ из других классов, он не должен инкапсулироваться внутри другого класса. Вытяните его самостоятельно. –
, если вы публикуете свой «MyForm' ctor public и удаляете ключевое слово« public »внутри ctor, это фактически компилируется и запускается, как это нецелесообразно. – Jonesopolis