我试图延长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