Видимость объекта, объявленного в одном методе, из другого метода - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! В методе A объявляю объект DataSet. Затем из метода А мне нужно многократно вызывать вспомогательный метод Б, который делает некие вычисления и дописывает в DataSet данные. Проблема в том, что из метода Б "не видно" DataSet, который объявлен в методе А. Объявить его глобально в Form1 нет возможности. Подскажите, что лучше: передавать большой DataSet в виде параметра или есть какой-то другой вариант?

Решение задачи: «Видимость объекта, объявленного в одном методе, из другого метода»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
 
namespace ConsoleApplication51
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Old DataSet");
 
            Console.WriteLine("By Val: ");
 
            ChangeDataSetByVal(ds);
 
            Console.WriteLine(ds.DataSetName);
            foreach (DataTable dt in ds.Tables)
                Console.WriteLine(dt.TableName);
 
            Console.WriteLine();
 
            Console.WriteLine("By Ref: ");
            ChangeDataSetByRef(ref ds);
 
            Console.WriteLine(ds.DataSetName);
            foreach (DataTable dt in ds.Tables)
                Console.WriteLine(dt.TableName);
 
            Console.ReadLine();
        }
        //Передаем по значению и пытаемся изменить ссылку внутри метода==false
        static void ChangeDataSetByVal(DataSet ds)
        {
            DataTable dt1 = new DataTable("Table 1_val");
            DataTable dt2 = new DataTable("Table 2_val");
            ds.Tables.AddRange(new DataTable[] { dt1, dt2 });
 
            ds = new DataSet("New DataSet");
        }
        //Передаем по ссылке и пытаемся изменить ссылку внутри метода==true
        static void ChangeDataSetByRef(ref DataSet ds)
        {
            DataTable dt1 = new DataTable("Table 1_ref");
            DataTable dt2 = new DataTable("Table 2_ref");
            ds.Tables.AddRange(new DataTable[] { dt1, dt2 });
 
            ds = new DataSet("New DataSet");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы