我有一个问题,就是从方法中返回两个值。
我有一个方法,我必须从中返回两个值。我确实喜欢这个。
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
的这些值。我怎么能这样做?
答案 0 :(得分:7)
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; }
}
答案 1 :(得分:4)
你会这样使用它:
string xmlName;
string xsdName;
fileName("2014", out xmlName, out xsdName);
您的fileName()方法的返回类型可以为void
,因为您在技术上不会从函数返回任何内容。
答案 2 :(得分:3)
最好的概念是使用面向目标的编程。创建一个具有两个属性xmlName
和xsdName
的类。然后从方法返回该类的新实例。
下面的代码可以给你一个想法。
文件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#。
答案 3 :(得分:2)
你的问题很模糊,但我会尽我所能。
以下是调用fileName
并接收最后两个参数的输出的方法:
string xmlName;
string xsdName;
myInstance.fileName("2014", out xmlName, out xsdName);
我倾向于回避使用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
}
}
}
答案 4 :(得分:2)
使用out
参数调用函数:
string xmlN;
string xsdN;
var result = fileName("rate value", out xmlN, out xsdN);
但有一个问题是你需要在函数结束之前分配它们。
在这种情况下,将它们设置为null
可能是合适的。
答案 5 :(得分:2)
有几种可行的方法。首先是你如何做 - 输出参数
string xmlName, xsdName;
filename("xxx", out xmlName, out xsdName);
第二个是使用元组。
public Tuple<string, string> fileName(string rate)
{
...
return Tuple.Create(xmlName, xsdName)
}
第三个是定义你自己的类
class XmlInfo
{
public string XmlName {get; set;}
public string XsdName {get; set;}
}
XmlInfo filename(string rate)
{
...
return new XmlInfo() { XmlName = xmlName, XsdName = xsdName };
}