【发布时间】:2017-02-06 19:29:13
【问题描述】:
我正在尝试编写我的第一个 c# 程序,但我无法不断收到以下错误。有人可以解释为什么我会收到此错误吗?任何东西在被声明的时候都有一个类型,这个 void 是从哪里来的?如果它很重要,我正在https://repl.it/languages/csharp 上编写代码。
using System;
using System.Linq;
using System.Collections.Generic;
class MainClass {
public static void Main (string[] args) {
List<string> mylist = new List<string>() { "2","1","2","3","3","4" };
mylist=mylist.Sort();
foreach(var item in mylist)
{
Console.Write(item.ToString());
}
}
}
错误:
Cannot implicitly convert type `void' to `System.Collections.Generic.List<string>'
【问题讨论】:
-
Sort()已就位。无需分配结果。 -
框架中的大多数东西都是可变的,因此更改原始对象的方法往往返回 void 而不是被变异的对象。字符串是一个值得注意的例外。
-
@Will 将数组称为异常更准确。字符串包含在其中是因为它们使用数组作为基础数据类型。
-
@Abion47 嗯,你在分裂头发。你可以改变一个数组,但你不能直接改变它的长度。但这不是字符串不可变的原因,该决定比数组类型的实现细节涉及更多。