我試圖延長C#列表使用打印功能。使用Console.WriteLine(a.Print())只顯示部分輸出,但a.Print2()正常工作,其中在a.Print我打電話返回類型爲字符串,並以a.Print2我打電話用的功能的方法返回值void。爲什麼Console.Writeline直接擴展方法工作,但使用的回報不
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();
}
}
}
我甚至不知道static public void是合法的語法,直到我讀到這個。 –
當你調試也並非表現出你和你的打印方法確切的問題(在循環覆蓋輸出)?我的意思是,我在此之前假設你看過你的方法中輸出變量是如何構造的?我的意思是,如果不先進行基本的調試,你不會問這個問題嗎? – Chris
@Chris你爲什麼不呢? – Servy