为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中是否可以实例化一个具有值的类?

在 C# 中是否可以实例化一个具有值的类?

C#
慕的地6264312 2022-12-24 14:11:14
在 C# 中是否可以实例化一个具有值的类?也就是说,如果一个类包含一个数组,是否可以创建一个类,在类实例化时传递所需数组的长度?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

是的。


最明显的方法是使用类的构造函数:


class X

{

    public int[] MyArray

    {

         get;

         set;

    }


    public X(int arrayLength)

    {

         MyArray = new int[arrayLength];

    }

}

您现在可以使用以下方法实例化它:


X myX = new X(5);

您还可以使用它的属性实例化一个类:


class X

{

    public int[] MyArray

    {

         get;

         set;

    }


    public int ArrayLength

    {

        set

        {

             MyArray = new int[value];

        }

    }

}

并按如下方式调用它:


X myX = new X { ArrayLength = 5};

我会选择第一个选项......


查看完整回答
反对 回复 2022-12-24
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

是的


public class MyClass

{

    private readonly string[] _myArray;


    public MyClass(int arrayLength)

    {

        _myArray = new string[arrayLength];

    }

}



var myClass = new MyClass(5);


查看完整回答
反对 回复 2022-12-24
?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以将长度作为构造函数参数传递。构造函数看起来像一个与类同名的方法,但没有返回类型(甚至没有void)。


public class MyClass

{

    public MyClass(int arrayLength)

    {

        MyArray = new string[arrayLength];

    }


    public string[] MyArray { get; }

}

此解决方案使用 getter only 属性。您可以在构造函数中或使用属性初始化程序对其进行初始化,但是一旦创建了对象,它就是只读的。


您可以像这样创建一个MyClass对象:


var obj = new MyClass(10);

string firstElementOfArray = obj.MyArray[0];

string lastElementOfArray = obj.MyArray[9];

但是请选择比MyClassor更好的名字MyArray。真实姓名必须提供信息。一个类可以命名为StudentorVehicle或Invoice。该数组可以命名为Grades,Passengers或InvoiceLineItems。


但是根据您的要求,该数组可以只是一个私有字段,不能从类外部访问。


查看完整回答
反对 回复 2022-12-24
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号