我想从C#中的方法返回年龄值,如下所示
private int UpdateAges( int age1, int age2, int age3, int age4)
{
age1++;
age2++;
age3++;
age4++;
return (age1, age2, age3, age4);
}
我可以像下面一样使用它
MessageBox.Show(UpdateAges(45, 30, 45, 30).ToString());
答案 0 :(得分:5)
尝试一下:
private Tuple<int, int, int, int> UpdateAges( int age1, int age2, int age3, int age4)
{
age1++;
age2++;
age3++;
age4++;
return Tuple.Create(age1, age2, age3, age4);
}
答案 1 :(得分:4)
如果只想在消息框中显示结果,则返回一个字符串:
private string UpdateAges(int age1, int age2, int age3, int age4)
{
age1++;
age2++;
age3++;
age4++;
return "age1 = " + age1 + ", age2 = " + age2 + ", age3 = " + age3 + ", age4 = " + age4;
}
MessageBox.Show(UpdateAges(45, 30, 45, 30));
如果您还想在显示的消息框后更新年龄值,请为每个参数添加ref关键字。
private string UpdateAges(ref int age1, ref int age2, ref int age3, ref int age4)
{
age1++;
age2++;
age3++;
age4++;
return "age1 = " + age1 + ", age2 = " + age2 + ", age3 = " + age3 + ", age4 = " + age4;
}
MessageBox.Show(UpdateAges(ref age1, ref age2, ref age3, ref age4));
答案 2 :(得分:3)
请参阅-How to Return Multiple Values From a Function in C#
从函数中返回多个值的方法很少。
Ref-在C#7中,借助tuple types
和tuple literals
,您可以从一个方法中返回多个值。
(int, int, int, int) UpdateAges(int age1, int age2, int age3, int age4) // tuple return type
{
age1++;
age2++;
age3++;
age4++;
return (age1, age2, age3, age4);
}
使用:
var values = UpdateAges(1, 2, 2, 3);
使用元组:
private Tuple<int, int, int, int> UpdateAges(int age1, int age2, int age3, int age4)
{
age1++;
age2++;
age3++;
age4++;
return Tuple.Create(age1, age2, age3, age4);
}
答案 3 :(得分:1)
您还可以像这样使用'out int'。
private void UpdateAges(int IAge1, int IAge2, int IAge3, int IAge4, out int OAge1, out int OAge2, out int OAge3, out int OAge4)
{
OAge1 = IAge1++;
OAge2 = IAge2++;
OAge3 = IAge3++;
OAge4 = IAge4++;
}
当您称呼它时,您需要像这样使用。
UpdateAges( Age1, Age2, Age3, Age4, out Age1, out Age2, out Age3, out Age4 );
答案 4 :(得分:1)
您可以通过多种方式解决此问题。
使用元组
private Tuple<int, int, int, int> UpdateAges(int age1, int age2, int age3, int age4)
{
return Tuple.Create(++age1, ++age2, ++age3, ++age4);
}
使用列表
private List<int> UpdateAges(int age1, int age2, int age3, int age4)
{
return new List(){++age1, ++age2, ++age3, ++age4};
}
使用数组
private int[] UpdateAges(int age1, int age2, int age3, int age4)
{
var results = new int[4];
results[0] = ++age1;
results[1] = ++age2;
results[2] = ++age3;
results[3] = ++age4;
}
使用参考参数
private List<int> UpdateAges(ref int age1, ref int age2, ref int age3, ref int age4)
{
age1++;
age2++;
age3++;
age4++;
}
答案 5 :(得分:1)
如何使用列表:
private static List<int> UpdateAges(int age1, int age2, int age3, int age4)
{
return new List<int> { ++age1, ++age2, ++age3, ++age4 };
}
然后这样称呼它:
Console.WriteLine(string.Join(",", UpdateAges(1, 2, 3, 4)));
好的,希望能帮上忙。
答案 6 :(得分:1)
虽然您可以使用Tuple
或ref
来实现所需的功能,但是我不确定这是否是您的最佳选择。
您可以使用专用的类封装所有逻辑:
public class Ages
{
public int Age1 { get; set; }
public int Age2 { get; set; }
public int Age3 { get; set; }
public int Age4 { get; set; }
private void UpdateAges()
{
this.Age1++;
this.Age2++;
this.Age3++;
this.Age4++;
}
private string ToString() =>
$"Age1 = {this.age1}, Age2 {this.age2}, Age3 = {this.age3}, Age4 {age4}";
}
通过这种方式,与年龄相关的所有内容都集中在一个地方,并且可以在您的代码中重复使用。
您当然可以更进一步,并用List
或Array替换“ age”属性。
public class Ages
{
public int[] Ages { get; }
public Ages (params int[] ages)
{
this.Ages = ages;
}
private void UpdateAges() =>
for (int i = 0; i < this.Ages.Length; i++) this.Ages[i]++;
private string ToString() =>
string.Join(", ",
this.Ages.Select((age, i) => $"Age{i} = {age}"));
}
var ages = new Ages(31, 40, 12, 18);
ages.UpdateAges();
MessageBox.Show(ages.ToString());
答案 7 :(得分:1)
使用方法参数params,
您可以在Enumerable,列表数组等中传递任意数量的参数返回。
通过灵活的调用Increment(1,2,3),
Increment(1,2),
Increment(myIntArray),
Increment(1)`..
static IEnumerable<int> Increment(params int[] args)
{
return args.Select(x => x + 1);
}
允许像这样的通话:
var result = Increment(45, 30, 45, 30);
// {46, 31, 46, 31}
对于显示,您可以使用string join。 string.Join(", ", result)
static void Main(string[] args)
{
var uniqueValue = 99;
var multipleValues = new[] { 1, 2, 6 };
var uvResult = Increment(uniqueValue);
var mvResult = Increment(multipleValues);
Console.WriteLine($"uniqueValue = {uniqueValue} => {string.Join(", ",uvResult)}");
Console.WriteLine($"multipleValues = {string.Join(", ",multipleValues)} => {string.Join(", ",multipleValues)}");
}
答案 8 :(得分:0)
1。用完:
static void UpdateAges(out int age1, out int age2)
{
age1++;
age2++;
}
int age1;
int age2;
UpdateAges(out age1, out age2);
Console.WriteLine(age1);
Console.WriteLine(age2);
2。使用Usng KeyValuePair:
static KeyValuePair<int, int> UpdateAges(age1, age2)
{
return new KeyValuePair<int, int>(age1++, age2++);
}
int age1;
int age2;
var pair = GetTwoNumbers(age1,age2);
Console.WriteLine(pair.Key);
Console.WriteLine(pair.Value);
3。使用元组:
static Tuple<int, int> UpdateAges(age1, age2)
{
return new Tuple<int, int>(age1++, age2++);
}
int age1;
int age2;
var tuple = UpdateAges(age1,age2);
int a = tuple.age1;
int b = tuple.age2;