完全披露:我是C#的新手,而不是程序员程序员 - 我主要是SQL Server开发人员。这可能意味着我的问题要么天真也要简单。如果是这种情况,请道歉。
我已经使用多种方法创建了一个数据处理类。这些方法都使用同一组元数据的元素来驱动处理。元数据是从SQL Server元数据存储返回的单行数据中获取的。
最初,我将此数据行转换为变量,并明确地将这些数据传递给方法。哪个很快弄乱了。所以我接着转向基于Fields的方法,这使得事情变得更加整洁,但是如果元数据结构发生变化则需要管理。
为了使事情更具适应性,我接着实现了一个基于字典的方法,使用SQLDataReader和循环将列名和值转换为键/值对。我挣扎的那一点是引用这本词典。我可以避免像现在这样明确地将字典对象传递给每个方法,例如
public void Main()
{
// create a dictionary and add values
Dictionary<string, string> myDictionary = new Dictionary<string, string>()
{
{"cat", "miaow"},
{"dog", "woof"},
{"iguana", "grekkkk?"}
};
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["cat"]);
// call another procedure
up(myDictionary);
// call another procedure that calls another procedure
sh(myDictionary);
}
public void up(Dictionary<string, string> myDictionary)
{
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["dog"]);
}
public void sh(Dictionary<string, string> myDictionary)
{
// call another procedure
up(myDictionary);
}
或者我是否完全咆哮错误的树?
我已经看到过这篇文章:sharing dictionary contents between class instances,但是试图了解如何使用这个内容远远超出了我目前的知识水平。
编辑:根据Jon和Rodrigo的回答,我是如何做到的:
// create an empty dictionary
Dictionary<string, string> myDictionary = new Dictionary<string, string>()
{
};
public void Main()
{
// build the dictionary
BuildDictionary();
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["cat"]);
// call another procedure
up();
// call another procedure that calls another procedure
sh();
}
public void BuildDictionary()
{
// note that in implementation this uses a dynamic process
// rather than just explicitly setting values
myDictionary.Add("cat", "miaow");
myDictionary.Add("dog", "woof");
myDictionary.Add("iguana", "grekkk?");
}
public void up()
{
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["dog"]);
}
public void sh()
{
// call another procedure
up();
}
更整洁。感谢两者。
伊恩
答案 0 :(得分:1)
在你非常特殊的情况下,你只是在自己的类中使用成员,你应该只将字典设置为你的类的私有成员(private是成员的默认行为,它是隐式的)。
Dictionary<string, string> myDictionary = new Dictionary<string, string>()
{
{"cat", "miaow"},
{"dog", "woof"},
{"iguana", "grekkkk?"}
};
public void Main()
{
// create a dictionary and add values
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["cat"]);
// call another procedure
up();
// call another procedure that calls another procedure
sh();
}
public void up()
{
// get a value from the dictionary and display it
MessageBox.Show(myDictionary["dog"]);
}
public void sh()
{
// call another procedure
up();
}
您还应该看一下修饰符。有关详情,请查看here