Csharp/C#教程:从部分类访问类字段分享


从部分类访问类字段

我目前处于一个必须使用部分类的场景中。 在这个部分类中,我有一些方法需要解决另一个类中的字段。

例如

编辑:对不起:第一堂课已被宣布为partial

 public partial class myClass { private string _myString; public string myString { get { return _myString; } set { _myString = value; } } } 

 public partial class myClass { public void doSomething() { myString = "newString"; } } 

编译器说部分类中不存在myString

我怎样才能克服这个问题?

您发布的代码需要修复一些内容:

在C#中使用部分类时,必须将类的所有部分声明为部分类

你有

  public class myClass {} public partial class myClass {} 

哪个需要成为

 public partial class myClass {} public partial class myClass {} 

其次,你正试图设定

 myString="newString"; 

但是myString是一个没有setter的公共属性。

因此,要么在声明myString时添加setter

 public string myString { get{ return _myString; } set { _myString = value; } } 

或者只是使用

 _myString="newString"; 

在你的第二个partical类文件中。

一个常见问题是在不同的命名空间中使用部分类。 命名空间是类名称的一部分, namespace1.myClassnamespace.a.myClass被处理为两个完全独立的类。

根据MSDN ,部分类的每个部分应该:

当我将您的代码放入Visual Studio时,我得到了一个不同的错误:

 myString = "newString"; Error Property or indexer 'ConsoleApplication1.Program.myClass.myString' cannot be assigned to -- it is read only 

如果我将其更改为此,它可以正常工作:

 _myString = "newString"; 

编辑:

不需要在两个宫殿中将一个类标记为部分,这可以很好地编译:

  public class myClass { private string _myString; public string myString { get { return _myString; } } } public partial class myClass { public void doSomething() { _myString = "newString"; } } 

假设两个声明都引用相同的命名空间,则第一个声明不包含partial关键字:

使用partial关键字表示可以在命名空间中定义类,结构或接口的其他部分。 所有部分必须使用partial关键字。 所有部件必须在编译时可用,以形成最终类型。 所有部分必须具有相同的可访问性,例如public,private等等.public,private等。

https://msdn.microsoft.com/en-en/library/wa80x488(v=VS.80).aspx

您只需要在两个地方将该类标记为partial ,而不仅仅是其中之一。

上述就是C#学习教程:从部分类访问类字段分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/983265.html

(0)
上一篇 2021年12月19日
下一篇 2021年12月19日

精彩推荐