Видимость объекта, объявленного в одном методе, из другого метода - 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"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д