成员名称不能与它们的封闭types相同C#
下面的代码是在C#中,我正在使用Visual Studio 2010。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; namespace FrontEnd { class Flow { long i; private int x,y; public int X { get;set; } public int Y { get;set; } private void Flow() { X = x; Y = y; } public void NaturalNumbers(int x, int y) { for (i = 0; i < 9999; i++) { Console.WriteLine(i); } MessageBox.Show("done"); } } }
当我编译上面的代码,我得到这个错误:
错误:'stream':成员名称不能与它们的封闭types相同
为什么? 我该如何解决这个问题?
与类名相似的方法名称称为构造函数。 构造函数没有返回types。 所以正确的是:
private Flow() { X = x; Y = y; }
或者将该函数重命名为:
private void DoFlow() { X = x; Y = y; }
虽然整个代码对我来说没有任何意义。
问题出在这个方法上:
private void Flow() { X = x; Y = y; }
你的类被命名为Flow
所以这个方法不能被命名为Flow
。 您必须将Flow
方法的名称更改为其他内容才能编译此代码。
还是你的意思是创build一个私有构造函数来初始化你的类? 如果是这样的话,你将不得不删除void
关键字来让编译器知道你声明了一个构造函数。
构造函数不返回一个types,只是删除你的情况下返回types是无效的。 那会运行得很好。
构造函数不应该有返回types。 在每个构造函数之前删除void。
构造函数的一些非常基本的特征:
一个。 与b类同名。 没有返回types。 C。 每次在课堂上制作一个对象时都会被调用。 例如,在你的程序中,如果你创build了两个Flow对象,Flow flow1 = new Flow(); Flow flow2 = new Flow(); 那么Flow构造函数将被调用2次。
d。 如果你只想调用构造函数一次,然后声明为静态(静态构造函数),不要忘记从静态构造函数中删除任何访问修饰符..
只是删除这个因为构造函数没有返回types,如void将会是这样的:
private Flow() { X = x; Y = y; }
作为构造函数应该在类的开始,你正面临着上述问题。 所以,你可以改变名称,或者如果你想使用它作为构造函数,只需在类的开头复制方法即可。