如何通过公共函数传递/使用Form1中的类的私有变量?
我不想在类中创建Form1的新实例,我不想使用static
。
我有这两个变量在类的顶部是私有的:
private List Point_X = new List(); private List Point_Y = new List();
现在在Form1中,我为新类创建了一个新实例: WireObject1
。
我需要在Form1中,以便我能够键入:
WireObject1.Point_X // Or WireObject1.anyFunctionherethatwillcontainthePOINT_X
Point_Y也是如此。
在类中它们是私有的,但是在类中使用公共函数我将能够在Form1中使用它们。
我不知道我是否明白你需要什么。
无论如何,你可以尝试使用公共财产:
public List PointX { get { return Point_X; } } public List PointY { get { return Point_Y; } }
试试这个:
public ReadOnlyCollection GetXValues() { return Point_X.AsReadOnly(); }
如果我理解,您希望在类之外提供对Point_X
只读访问权限。 这种方法可以让你这样做。 或者您可以使用只读属性:
public ReadOnlyCollection XValues { get { return Point_X.AsReadOnly(); } }
关键是AsReadOnly
方法调用,以防止更改类外的集合。 如果直接返回List
,则调用者可以更改它。
有两种解决方案:
-
使变量成为公共属性 – 尽管使用列表存在问题,因此使用
ReadOnlyCollection
包装器是解决此问题的方法。 -
创建一个公共方法,对列表执行所需的操作。
例如,要向列表中添加一个点,您需要:
public void AddValueToX(float value) { PointX.Add(value); }
如果你想测试一个值是否在列表中(当你处理单精度值时,它充满了危险):
public bool InListX(float value) { // A test on value vs the data in Point_X allowing for floating point inaccuracies }
规范的解决方案是
private List mPoint_X = new List (); private List mPoint_Y = new List (); public List Point_X { get { return mPoint_X; } } public List Point_Y { get { return mPoint_Y; } }
您不能在另一个类中使用类的私有字段(因为Form只是另一个类)。 如果限制可访问性对您来说很重要,那么您可以使用internal
关键字而不是private
关键字。 但只有当两个类都在同一个程序集中时才会起作用。
internal List Point_X = new List (); internal List Point_Y = new List ();
要明确的是,拥有一些“包装”私有字段访问权限的属性或方法总是很好,但据我所知,出于某种原因,这并不是你想要避免的。
上述就是C#学习教程:如何通过公共函数传递/使用Form1中的类的私有变量?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1008810.html