Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема при передачи массива структур [C# .NET WSS]

25K
12 августа 2009 года
mdrm
37 / / 26.05.2008
Здравствуйте,

Помогите возникла проблема при передачи массива структур в функцию на web-сервисе.

Есть web-сервис где объявляется структура
 
Код:
public struct MyStruct
        {
            public string Name;
            public long size;
        }

и там же есть функция которая принимает массив этих структур,
 
Код:
public String rec_ms(MyStruct[] my_struct)

и есть программа на которой создается массив тех структур что лежат на сервисе
 
Код:
public MyStruct[] ms = new *MyStruct[5];

при любой попытке записать в структуру данные
 
Код:
ms[0].Name = "";

возникает ошибка "Object reference not set to an instance of an object.".
Если я дублирую структуру, т.е. объявляю её в программе все отрабатывает но ошибка происходит при вызове функции rec_ms().
Ругается на то что структуры разные.

Кто нибудь знает как можно решить эту задачу, или какой нибудь другой способ отправить массив структур в сервис?
297
12 августа 2009 года
koodeer
1.2K / / 02.05.2009
Ошибка "Object reference not set to an instance of an object" в переводе на русский означает: "В экземпляре объекта не задана ссылка на объект". Из чего следует, что присвоение ms[0].Name = ""; происходит до создания массива public MyStruct[] ms = new MyStruct[5];

ЗЫ: думаю, звёздочка в строке
Цитата:
public MyStruct[] ms = new *MyStruct[5];

это всего лишь опечатка?

25K
13 августа 2009 года
mdrm
37 / / 26.05.2008
да это на самом деле опечатка, объявляется на самом деле так:
 
Код:
public MyStruct[] ms = new MyStruct[5];


Вот код как я использую:
Код:
namespace MyProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        // объявляю массив структур
        public MyStruct[] ms = new MyStruct[5];

        private void button1_Click(object sender, EventArgs e)
        {
            ms[0].Name = ""; // вот здесь и вылетает ошибка "Object reference not set to an instance of an object"

        }
}


пробывал и так:
Код:
namespace MyProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        // объявляю массив структур
        public MyStruct[] ms;

        private void button1_Click(object sender, EventArgs e)
        {
            ms = new MyStruct[5];
            ms[0].Name = ""; // вот здесь и вылетает ошибка "Object reference not set to an instance of an object"

        }
}

и так:
Код:
namespace MyProject
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            MyStruct[] ms = new MyStruct[5];
            ms[0].Name = ""; // вот здесь и вылетает ошибка "Object reference not set to an instance of an object"

        }
}

Мне кажется надо как то инициализировать члены структуры name и size.
Вроде бы массив инициализирую до использования.
Может VS 2008 требует дополнительных настроек для использования структур WEB-сервиса? но хотя работает все отлично без массива. А вот с массивом все плохо.

PS ошибка вылетает в ходе выполнения программы.
2.1K
13 августа 2009 года
wAngel
129 / / 23.11.2004
У меня Ваш код прекрасно работает. Проблема в чем-то другом.
Возможно стоит выложить весь проект.
1.9K
13 августа 2009 года
GreenRiver
451 / / 20.07.2008
Проблема в том, что структуры объявлены, не в этом проекте а в Web-сервисе, я правильно понимаю? Вообще интересно, что не работает именно с массивами. Может быть попробовать так:
 
Код:
MyStruct[] ms = new MyStruct[5];
ms[0] = new MyStruct();
ms[0].Name = "";
25K
13 августа 2009 года
mdrm
37 / / 26.05.2008
GreenRiver, спасибо большое.
Да структура объявлена на web-сервисе.
Ваш метод инициализации действительно отлично работает!!!

 
Код:
MyStruct[] ms = new MyStruct[5];
ms[0] = new MyStruct();
ms[0].Name = "";
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог