社区
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)
...全文
1939
18
打赏
收藏
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案
C#里面怎么把 类名 和 函数名 作为变量参数传递啊?100分求一个解决方案 例如需要将一个方法作为变量传递给 ThreadStart 只能直接写成这样 new ThreadStart(Hotel.run()) new ThreadStart(Customer.run()) 能不能有一个更加灵活得方法写成诸如 method=... new ThreadStart(method)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
3D图示Python标准自学教程基础篇(5)_模块与包
本套课程为Python基础篇的第5套课程,主要讲解python模块与包的知识体系。共分为三部分:模块与包、PEP8 开发规范、常用
函数
库。 第一部分:首先讲解Python模块与包的定义与应用。先从Python的三种导入方式(直接导入、全部导入、部分导入)讲起,然后对模块成员
函数
的可访问性进行总结归纳,末尾就模块的执行顺序、模块的搜索路径以及包的定义与应用进行详细的阐述 第二部分:对Python的PEP8 开发规范进行详细的总结与梳理,主要讨论与总结Python的总体开发规范(编码/缩进/行宽/引号/空行/空格)、注释规范(文档注释/块注释/行注释)、命
名
规范(模块/包
名
/
类
名
/
函数
/
变量
)等。 第三部分: 讲解常用
函数
库,对python语言中最为常用的模块:随机数、日期时间、与数学模块进行详细讲解。 课程末尾需要重点说明的是,本系列课程均设置课堂练习与课后作业集中讲解(录播形式),让初学者通过大量练习与阶段项目等手段有效强化学习效果,保证学习过程中的技能全面提升!教学特点: 使用大量(3D/2D)动画与图示方式,由浅入深讲解Python编程。配之海量课堂练习/课后作业的大量讲解,以及刘老师风趣幽默的课堂幽默感染力,让你轻松加愉悦的心情下开启Python系统学习之旅,系统与深入掌握当今最为火热的人工智能御用编程语言! 本Python教程分为入门、基础、中级、进阶篇,共15套教程组成。突出教学特点如下: 1:为弥补线下“互动性”与知识点的高“吸收率”,每套课程均设置“课堂练习”、“课后作业”、“阶段项目实战”、以及每个章节末尾的“课程笔记”整理环节,不断强化学员知识点的不断巩固与知识体系的梳理,不遗漏任何重要知识点。 以上四大自学环节设置,保证自学过程中知识的反复锤炼与全面吸收,最终获得优秀学习效果! 2:本Python系列课程(15套)从入门篇开始,完全从真正零基础开始讲起,特别适合中小学生以及大学非计算机专业的初学者开始入门! 3:大量采用3D/2D图形化示例讲解,对于Python抽象与复杂问题全部采用3D动画演示。 4:每套课程开始均设置“课程概述”: 讲解本套课程的前导课程、后续课程,以及本套课程的知识体系内容,帮助学习者更好的掌握课程的来龙去脉。
C#
利用反射动态创建对象 带参数的构造
函数
和String类型 (转载)
最近笔者有
一个
想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造
函数
带参数的时候。MSDN上给出的例子十分复杂,网上的帖子则一般都说很简单,那就看看网上比较普遍的说法: “反射”其实就是利用程序集的元数据信息。 反射可以有很多方法,编写程序时请先导入 System.Reflection 命
名
空...
C#
常见错误及
解决方案
以下“
解决方案
”中的内容对应的是“错误信息”中内容的解决方法。 1. 编译器错误 CS0003 ?? 错误信息 内存不足。 ??
解决方案
编译器无法分配足够的虚拟内存完成编译。关闭所有不必要的应用程序并重新编译。 可能还需要增加页文件的大小,请确保有可用的磁盘空间。 当 .NET Framework SDK 与
C#
编译器的版本不匹配时,或者当
一个
或多个支持
C#
编译器的文件损
大学生
c#
期末复习题库 选择题,填空题,判断题(含答案)
161、在
C#
程序中,显示
一个
信息为“This is a test!45、在
C#
的类结构中,class关键字前面的关键字是表示访问级别,下面哪个关键字的访问级别是表示只有在同
一个
程序集内,且内部类型或成员才是可访问的?255、类声明后,可以创建类的实例,创建类的实例要使用(new)关键字,类的实例相当于
一个
变量
,创建类的实例的格式如:(
类
名
对象
名
= new 对象
名
())139、在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明为(virtual)。
C#
理论 —— 命
名
空间、类、方法、封装、多态、接口
文章目录1. 方法1.1 定义方法1.2 调用方法1.2.1 递归调用1.3
参数传递
1.3.1 按值传递参数1.3.2 按引用传递参数1.3.3 按输出传递参数 1. 方法
一个
方法(
函数
)是把一些相关功能的语句组织在一起,用来执行
一个
任务的语句块。每
一个
C#
程序至少有
一个
带有 Main 方法的类。 1.1 定义方法 语法: <访问修饰符> <返回值类型> <方法
名
>(参数列表) { ... } 例程: class NumberManipulator {
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章