100分的问题:C#中如果一个函数有很多参数,但只想给其中几个赋值,其余缺省,能否办到??? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#好像不支持缺省参数,你可以这样把这些参数作为一个结构struct parm{ public int n; public int c; public int d; .... public parm() { n=1; c=2; d=3; }}然后把这个结构传过去 public void test() : this(string.Empty)public void test(string name)........................ C#不支持缺省参数传个 null 也可以另外1楼,struct 我记得构造函数必须给所有变量赋值 参考一下MSDN给出的用重载来模拟默认参数static string myMethod(string precip, string country, string location) { return string.Format("The {0} in {1} stays mainly in the {2}.", precip, country, location ); }static string myMethod(string precip, string country ) { return myMethod(precip, country, "plain"); }static string myMethod() { return myMethod("rain", "Spain", "plain"); } 重载是C#解决默认参数的方法void SayHello(string msg){}void SayHello(){ SayHello("Hello World!");} 这个问题最好的解决方案使用重载,如果要传可变参数可以用Arraylist或者Hashtable . 用可变参数!这样你传入的参数是可变的。。不用考虑参数的个数。如下面定义:private string KeBianCanShu(params string[] values){ return(values[0]+values[1]);}调用的时候:string printStr="";printStr = KeBianCanShu("勿忘国耻,","抵制日货!")结果:printStr = "勿忘国耻,抵制日货!" zhanqiangz(闲云野鹤)说的有道理。。我上面那个例子只是针对字符串。要是其它数据类型的就得把上面的参数类型换成Arraylist或者Hashtable 复人: zhanqiangz(闲云野鹤Overriding-Try to quit smoking .) ( ) 信誉:100 2005-09-21 08:58:00 得分: 0 这个问题最好的解决方案使用重载,如果要传可变参数可以用Arraylist或者Hashtable . 重载了或者就用params参数来设置,void DoLoad(params object[] values){}当然这些方法只赋其中几个值的话,对于值参数很方便,如果是引用型就需要特别赋值了。也可以考虑用结构来实现。 改变策略,1.能否不用这种方式 2.使用params传一个参数数组 3.写个类,封装参数,如同事件处理中的EventArgs一样 4.用VB.NET写这个类 c# WinForm程序打包 救急!!! 请介绍一款对C#程序加密的软件 【来者有分】低调求一思路!!!!!!!!!!!!!!!!!!!!大家进!!!!!!!! dateTimePicker查询问题错误 达人怎么在.cs文件中验证email的有效 listview中能不能设置item高度 请教一个问题,C#操作串口的问题! 悬赏一个问题(装载出错) EF如何使用枚举类型? 怎么实现图片的任意方向.任意角度的旋转? 我执行两个存储过程返回查询到的记录集,想将两个记录集放在一个DATESET里..第一个放在table[0]里.第二个放在table[1]里.怎么帮?
把这些参数作为一个结构
struct parm{
public int n;
public int c;
public int d;
....
public parm()
{
n=1;
c=2;
d=3;
}
}
然后把这个结构传过去
{
return string.Format("The {0} in {1} stays mainly in the {2}.",
precip, country, location );
}static string myMethod(string precip, string country )
{
return myMethod(precip, country, "plain");
}static string myMethod()
{
return myMethod("rain", "Spain", "plain");
}
{}void SayHello()
{
SayHello("Hello World!");
}
如下面定义:
private string KeBianCanShu(params string[] values)
{
return(values[0]+values[1]);
}
调用的时候:
string printStr="";
printStr = KeBianCanShu("勿忘国耻,","抵制日货!")
结果:printStr = "勿忘国耻,抵制日货!"
我上面那个例子只是针对字符串。要是其它数据类型的就得把上面的参数类型换成Arraylist或者Hashtable
复人: zhanqiangz(闲云野鹤Overriding-Try to quit smoking .) ( ) 信誉:100 2005-09-21 08:58:00 得分: 0
这个问题最好的解决方案使用重载,如果要传可变参数可以用Arraylist或者Hashtable .
当然这些方法只赋其中几个值的话,对于值参数很方便,如果是引用型就需要特别赋值了。
也可以考虑用结构来实现。
1.能否不用这种方式
2.使用params传一个参数数组
3.写个类,封装参数,如同事件处理中的EventArgs一样
4.用VB.NET写这个类