C# 从c中的方法返回多个值#
我对从一个方法返回两个值有疑问 我有一个方法,我必须从中返回两个值。我确实喜欢这个C# 从c中的方法返回多个值#,c#,C#,我对从一个方法返回两个值有疑问 我有一个方法,我必须从中返回两个值。我确实喜欢这个 public string fileName(string rate,out string xmlName,out string xsdName) { if(rate=="2013") { xmlName="abc"; xsdName="def"; } if(rate=="2014") { xmlName="pqr";
public string fileName(string rate,out string xmlName,out string xsdName)
{
if(rate=="2013")
{
xmlName="abc";
xsdName="def";
}
if(rate=="2014")
{
xmlName="pqr";
xsdName="xyz";
}
//stmt 1 (Here it is asking to give default values for xmlname and xsdName.But i dont want to give any default values.)
}
现在在另一个类中,我必须调用这个函数,并在该类中分配
xmlname
和xsdName
的值。我该怎么做呢?你的问题很模糊,但我会尽力的
下面是如何调用fileName
并接收最后两个参数的输出:
string xmlName;
string xsdName;
myInstance.fileName("2014", out xmlName, out xsdName);
string xmlN;
string xsdN;
var result = fileName("rate value", out xmlN, out xsdN);
我倾向于避免使用out
。更好的解决方案是创建一个包装数据的新类:
public class File
{
public File(string fileName, string xmlName, string xsdName)
{
FileName = fileName;
XmlName = xmlName;
XsdName = xsdName;
}
public string FileName
{
get;
private set;
}
public string XmlName
{
get;
private set;
}
public string XsdName
{
get;
private set;
}
}
public class OtherClass
{
public File FileName(string rate)
{
switch (rate)
{
case "2013":
return new File(..., "abc", "def");
case "2014":
return new File(..., "pqr", "xyz");
default:
throw new ArgumentException(String.Format("Unexpected rate '{0}'.", rate)); // Or, simply return null
}
}
}
您可以这样使用它:
string xmlName;
string xsdName;
fileName("2014", out xmlName, out xsdName);
您的fileName()方法的返回类型可以是
void
,因为从技术上讲,您没有从函数返回任何内容。要使用out
参数调用函数,请执行以下操作:
string xmlName;
string xsdName;
myInstance.fileName("2014", out xmlName, out xsdName);
string xmlN;
string xsdN;
var result = fileName("rate value", out xmlN, out xsdN);
但一个问题是,您需要在函数结束之前分配它们。
在这种情况下,将它们设置为
null
可能是合适的。最好的概念是使用面向目标的编程。创建一个具有两个属性的类,xmlName
和xsdName
。然后从该方法返回该类的新实例
public OtherClass fileName(string rate)
{
OtherClass obj = new OtherClass();
if (rate == "2013")
{
obj.xmlName = "abc";
obj.xsdName = "def";
}
if (rate == "2014")
{
obj.xmlName = "pqr";
obj.xsdName = "xyz";
}
return obj;
}
public class OtherClass
{
public string xmlName { get; set; }
public string xsdName { get; set; }
}
下面的代码应该会给你一个想法。
类在文件XmlFile.cs
public class XmlFile
{
public string XmlName
{ get; set; }
public string XsdName
{ get: set; }
}
功能实现:
public XmlFile fileName(string rate)
{
XmlFile file = new XmlFile();
if (rate == "2013")
{
file.XmlName = "abc";
file.XsdName = "def";
}
if (rate == "2014")
{
file.XmlName = "pqr";
file.XsdName = "xyz";
}
return file;
}
请详细了解OO编程,您将需要它与C#配合使用。有几种可能的方法。首先是如何操作-输出参数
string xmlName, xsdName;
filename("xxx", out xmlName, out xsdName);
第二个是使用元组
public Tuple<string, string> fileName(string rate)
{
...
return Tuple.Create(xmlName, xsdName)
}
如果方法必须返回多个对象,请使用包含数据的类或使用两个方法。重新思考你的逻辑!