C#反常和有争议的结构

时间:2011-07-03 00:20:13

标签: c# .net

这篇文章的目的是收集所有日常不存在的整洁而棘手的c#构造和问题。

所以这里是:

问题1 (这是我自己发现的那个)

屏幕上会打印什么?

class Program
{
    private static String Function(out String str)
    {
        str = "Hello ";
        return "world!";
    }
    private static void Main(string[] args)
    {
        String x = Function(out x);

        Console.WriteLine(x);
    }
}

有什么想法? :)

第2期创建匿名类型的通用集合(例如List<>或Dictionary<>)是否可能?

  var Customer = new { FirstName = "John", LastName = "Doe" };
  var customerList = new List<????>();

考虑一下here

static List<T> CreateList<T>(params T[] values)
{
    return new List<T>(values);
}

static void Main(string[] args)
{
    var x = new { A = "Hello", B = "world!" };

    var list = CreateList(x);

    list.Add(new { A = "Hello again", B = "world!" });
}

分享您的发现。谢谢!

1 个答案:

答案 0 :(得分:2)

对于第一个示例,x的值将是方法的返回值,因为方法调用(包括out参数)在分配返回值之前发生。

就列表而言,您应该可以这样做:

var list = new[]
{
    new { a = 1, b = "hi" },
    new { a = 1, b = "hi" }
}.ToList();

虽然我不确定编译器是否会确定两个匿名类型是相同的。