我正在尝试扩展C#List以使用Print功能。使用Console.WriteLine(a.Print())只显示部分输出,但a.Print2()正常工作在a.Print我调用一个返回类型字符串的方法,在a.Print2中我调用一个函数返回值无效。
using System;
using ExtensionMethods;
using System.Collections.Generic;
namespace ExtensionMethods
{
public static class ExtensionClass
{
public static int PlusFive(this int input)
{
return input + 5;
}
static public string Print(this List<int> input)
{
int i;
string output = "";
for (i = 0; i < input.Count - 1; i++)
{
output = input[i].ToString() + ", ";
}
output += input[i].ToString();
return output;
// Outputs 2, 3
}
static public void Print2(this List<int> input)
{
int i;
for (i = 0; i < input.Count - 1; i++)
{
Console.Write(input[i].ToString() + ", ");
}
Console.Write(input[i].ToString());
// Outputs 1, 2 ,3
}
}
}
namespace LearningCSharp
{
class Program
{
static void Main(string[] args)
{
List<int> a = new List<int>(){1, 2, 3};
// int b = 2;
Console.WriteLine(a.Print());
a.Print2();
}
}
}
答案 0 :(得分:5)
因为您的Print()
方法已损坏。在循环中,您始终将output
设置为新字符串。你错过了加号:
static public string Print(this List<int> input)
{
int i;
string output = "";
for (i = 0; i < input.Count - 1; i++)
{
// missing plus here
output += input[i].ToString() + ", ";
}
return output;
}
但请注意,有更好的可能性来连接字符串。这里的一个解决方案可能是:
static public string Print(this List<int> input)
{
return string.Join(", ", input);
}