在 C# 中是不是可以用值实例化一个类? [关闭]
Posted
技术标签:
【中文标题】在 C# 中是不是可以用值实例化一个类? [关闭]【英文标题】:In C# is it possible to instantiate a class with a value? [closed]在 C# 中是否可以用值实例化一个类? [关闭] 【发布时间】:2019-09-12 16:00:06 【问题描述】:在 C# 中是否可以用值实例化一个类?也就是说如果一个类包含一个数组,是否可以创建一个类,在类实例化时传递所需数组的长度?
【问题讨论】:
当然,为什么不呢。你看过constructors吗? @RoyiNamir - 我投反对票的原因是因为这没有显示任何研究工作。就我个人而言,我不认为一个简单的“这可能吗?”如果问题没有代表提问者表现出任何努力(原因是向下投票箭头的工具提示之一),那么问题是一个非常明确的问题。想提一下我的推理可能会让 OP 知道...... 【参考方案1】:是的。
最明显的方式是使用类的构造函数:
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;
我会选择第一个选项...
【讨论】:
传递所需数组的*length*。不是数组本身 我修改了答案。 感谢您的快速回答。我用谷歌找不到它。我以前真的从未见过,但我认为这是可能的。【参考方案2】:是的
public class MyClass
private readonly string[] _myArray;
public MyClass(int arrayLength)
_myArray = new string[arrayLength];
var myClass = new MyClass(5);
【讨论】:
【参考方案3】:您可以将长度作为构造函数参数传递。构造函数看起来像一个与类同名的方法,但没有返回类型(甚至没有void
)。
public class MyClass
public MyClass(int arrayLength)
MyArray = new string[arrayLength];
public string[] MyArray get;
此解决方案仅使用 getter 属性。您可以在构造函数中或使用属性初始化器对其进行初始化,但是一旦创建了对象,它就是只读的。
您可以像这样创建MyClass
对象:
var obj = new MyClass(10);
string firstElementOfArray = obj.MyArray[0];
string lastElementOfArray = obj.MyArray[9];
但是,请选择比MyClass
或MyArray
更好的名称。真实姓名必须提供信息。一个类可以命名为Student
或Vehicle
或Invoice
。该数组可以命名为Grades
、Passengers
或InvoiceLineItems
。
但根据您的要求,该数组可能只是一个私有字段,无法从类外部访问。
【讨论】:
以上是关于在 C# 中是不是可以用值实例化一个类? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章