C#中有"记录"吗?

Nat*_*han 4 .net c# record visual-studio-2012

我希望将一些客户数据存储在内存中,我认为最好的方法是使用一组记录.我不确定这是否是它在C#中所称的,但基本上我可以调用Customer(i).Name并将客户名称作为字符串返回.在图灵,它的完成如下:

type customers :
    record
        ID : string
        Name, Address, Phone, Cell, Email : string
        //Etc...
    end record
Run Code Online (Sandbox Code Playgroud)

我已经搜索过,但我似乎无法找到C#的等价物.有人能指出我正确的方向吗?

谢谢!:)

Mik*_*oud 8

好的,那将class在C#中定义,所以它可能如下所示:

public class Customer
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string Phone { get; set; }
    public string Cell { get; set; }
    public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以有一个List<T>:

var customers = new List<Customer>();

customers.Add(new Customer
{
    ID = "Some value",
    Name = "Some value",
    ...
});
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以通过索引访问那些:

var name = customers[i].Name;
Run Code Online (Sandbox Code Playgroud)

更新:如上所述psibernetic,RecordF#中的类提供了门外的字段级别相等而不是引用相等.这是一个非常重要的区别.要在C#中获得相同的相等操作,您需要将其设为classa struct,然后生成相等所必需的运算符; 一个很好的例子被发现作为这个问题的答案需要在结构中覆盖什么才能确保平等运作正常?.