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