C#的类可以有内隐类(即可以在类中定义类),但是在方法中能否再定义一个方法呢?
比如
public void test()
{
public void test1(int a,bool cancel)
{
} if(aa>0)
{
test1(aa,true);
}
else
test1(aa,false); }
能否能象上面这样呢在test方法中再声明个方法test1呢?javascript是可以这样作的。我的目的:因为我在写一个方法的时候在多处的代码都是重复的,所以需要提取出一个方法test1来供test的多处调用,但是test1要共享一些test中的内部变量。大家来讨论下,是否有其他变通的方法。
比如
public void test()
{
public void test1(int a,bool cancel)
{
} if(aa>0)
{
test1(aa,true);
}
else
test1(aa,false); }
能否能象上面这样呢在test方法中再声明个方法test1呢?javascript是可以这样作的。我的目的:因为我在写一个方法的时候在多处的代码都是重复的,所以需要提取出一个方法test1来供test的多处调用,但是test1要共享一些test中的内部变量。大家来讨论下,是否有其他变通的方法。
解决方案 »
- C#读取excel文件
- 注册其他画面控件的事件的问题
- 图形操作时,怎么才能脱离母操作对象
- 关于google对博文的收录以及为什么会消失
- 这个网站多少钱,
- 求一个好点的第三方datagrid控件,VS2003~
- 求助。。。如何在windows下写限制输入的一定是数字
- 对象引用不到实值
- VC#.net 写的程序,编译通过一切正常,反向工程失败,无法将 UML 图添加到该解决方案中。 错误号 32.。 这是为什么 ????
- FileStream 如何与 Socket 或者 NetworkStream 很好的联合呢, 我现在的传输文件方法只是一个一个byte的读,然后判断是否为-1,请问有什
- datagridview中显示combobox的选项
- System.Net.FtpWebRequest的问题
我的这个问题纯属C#的问题,不关web的事情
把方法test1(int a,bool cancel) 定义到test()外面,然后在方法test()中调用test1好了
------------------------
不明白你的意思
{
}
public void test()
{ if(aa>0)
{
test1(aa,true);
}
else
test1(aa,false); }这样子不是最简单吗?
因为test()中还有8、9个局部变量,在test1方法中都要用到这些变量,不可能为每个变量都在test1(……)中加入参数吧???这样就变得复杂了,最好的就是在方法内有一种类似嵌套方法的形式,来共享这些局部变量
-------------------------------------------------------------不是什么东西都应该一定要用OO的,因为涉及到的局部变量多而杂,没有必要去封装到对象去,而且这样一来代码量很大,所谓存在即有理,delphi中就有这样的用法。
C# 2.0中的匿名方法的确可以解决我的这个问题,效果和我想的是一样的,而且很自然。
"重载"overload?应该 不行哦
因为涉及到的局部变量多而杂,没有必要去封装到对象去。--这是什么理由啊。
"多处的代码都是重复的","因为涉及到的局部变量多而杂",阅读下"重构",好的意见希望能够虚心接受。
我的建议就是希望你能够重构你的代码,再设计的重复三遍,目标(重用性,灵活性,扩展性).
因为涉及到的局部变量多而杂,没有必要去封装到对象去。
------------------------------------------------------这说明你的设计有问题。javascript一个方法就是一个对象,所以面向对象实现起来也不是很自然。
多谢指点!
只是举例而已,这个程序现在的代码肯定是不对的,c#是不支持方法嵌套的