社区
C#
帖子详情
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案
fanmingwu
2004-09-14 03:55:53
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案
例如需要将一个方法作为变量传递给 ThreadStart 只能直接写成这样
new ThreadStart(Hotel.run())
new ThreadStart(Customer.run())
能不能有一个更加灵活得方法写成诸如
method=...
new ThreadStart(method)
...全文
2044
18
打赏
收藏
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案 例如需要将一个方法作为变量传递给 ThreadStart 只能直接写成这样 new ThreadStart(Hotel.run()) new ThreadStart(Customer.run()) 能不能有一个更加灵活得方法写成诸如 method=... new ThreadStart(method)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wxy0401
2004-09-15
打赏
举报
回复
使用代理delegate
using System;
delegate void DoubleOp(double value);
class MainEntryPoint
{
static void Main()
{
DoubleOp operations = new DoubleOp(MathsOperations.MultiplyByTwo);
ProcessAndDisplayNumber(operations, 2.0);
ProcessAndDisplayNumber(operations, 7.94);
}
static void ProcessAndDisplayNumber(DoubleOp action, double value)
{
Console.WriteLine("\nProcessAndDisplayNumber called with value = " + value);
action(value);
}
}
class MathsOperations
{
public static void MultiplyByTwo(double value)
{
double result = value*2;
Console.WriteLine("Multiplying by 2: {0} gives {1}", value, result);
}
}
lwplay
2004-09-15
打赏
举报
回复
学习
wdwd05
2004-09-15
打赏
举报
回复
...,代理解决
ncowboy
2004-09-15
打赏
举报
回复
楼主,你是要启动一个新的线程么?
你给你的类多个构造函数,或许就能够满足你的要求了。你通过实例化不同的类,就可以达到传递参数给方法的效果。
superhasty
2004-09-15
打赏
举报
回复
MSDN中看到过。
悄悄的回来了
2004-09-15
打赏
举报
回复
用代理.
mywebcom
2004-09-15
打赏
举报
回复
Type type = Type.GetType("MyClassName");//类名作为变两名
shang123guan
2004-09-14
打赏
举报
回复
不要分,只想顶
krjzz
2004-09-14
打赏
举报
回复
天涯,你的程序有问题。
F:\学习\c#程序\ConsoleApplication3\Class1.cs(19): 在不带括号的情况下引用了方法“TestMain.SayB()”
F:\学习\c#程序\ConsoleApplication3\Class1.cs(18): 在不带括号的情况下引用了方法“TestMain.SayA()”
怎么解决啊?谢谢。
khpcg
2004-09-14
打赏
举报
回复
楼主你思考的问题很高深啊
赞成用代理
yellowhwb
2004-09-14
打赏
举报
回复
类名不可以做为类的属性,但在函数里可以作为变量使用!
public class myClass
{
//public int myClass=0;//错误“成员名称不能与它们的封闭类型相同”
public myClass()
{
int myClass;//正确
}
}
dreammaster
2004-09-14
打赏
举报
回复
jiezhi(風依舊) 用的反射方法就是用一个string的classname来做变量。
你是说用一个typeof()的东东吗?
fanmingwu
2004-09-14
打赏
举报
回复
类名可不可以做为变量名啊??
jimh
2004-09-14
打赏
举报
回复
同意天涯的意见
jiezhi
2004-09-14
打赏
举报
回复
/// <summary>
/// 运行已知类名的方法
/// </summary>
/// <param name="className"></param>
/// <param name="methodName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public static object RunMethod(string className,string methodName,object[] parameters)
{
Type t = Type.GetType(className,true,true);
t = Assembly.GetAssembly(t).GetType(className);
MethodInfo m = t.GetMethod(methodName);
object obj = Activator.CreateInstance(t);
return m.Invoke(obj,parameters);
}
dreammaster
2004-09-14
打赏
举报
回复
用delegate
public class Test {
public delegate viod MyDelegate();
public void ProcessDelegate(MyDelegate myDelegate){
myDelegate();
}
}
public class TestMain{
public static void Main()
{
Test test = new Test();
test.ProcessDelegate(SayA);
test.ProcessDelegate(SayB);
}
public void SayA()
{Console.WriteLine("A");}
public void SayB()
{
Console.WriteLine("B");
}
}
adailee
2004-09-14
打赏
举报
回复
new ThreadStart(Hotel.run())应该这样写:new ThreadStart(Hotel.run)。
这是代理(Delegate)的用法。
test7979
2004-09-14
打赏
举报
回复
可以这样:
methodInfo = 使用反射得到类型的方法
Delegate.CreateDelegate(typeof(ThreadStart), methodInfo)
C#
静态调用webservice
搭建iis网站,通过webservice指定网址,即可通过调用webservice访问数据库。
C#
教程
发布
一个
C#
教程 适合初学者,高手莫下
c#
提纲学习精华笔记整理
对于学习
c#
很有帮助。
c#
提纲学习精华笔记整理
CSharp-calls-JAVA-program.rar_
C#
调用java的dll_
c#
调用 java sdk_
c#
调用ja
在
C#
环境下调用JAVA程序的实例代码,添加dll文件后,引用package ,创建环境
变量
,即可调用java写的类及构造方法
c#
最全的面试题目2008
这个面试题目 花了我N天来完成的, 从不同的网站收集起来
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章