c#中隐式类型转换
Implicit type conversion in C#
本文关键字:类型转换 更新时间:2023-10-16
我正在将C 程序移植到C#。我刚开始学习C#。
在C 中,如果我定义了带有字符串参数的构造函数
class ProgramOption { public: ProgramOptions(const char* s=0); };
然后,我可以在programOptions的位置使用字符串参数,例如
int myfucn(ProgramOption po);
myfunc("s=20;");
我也可以将其用作默认参数,例如,
int myfunc(ProgramOption po=ProgramOption());
不幸的是,在C#中,即使我有
class ProgramOption { public ProgramOptions(const char* s=0) {...} }
我发现我无法将其用作默认参数,
int myfunc(ProgramOption po=new ProgramOption());
,如果没有明确的转换,我将无法通过字符串字面
myfunc("s=20");
这在C#中是不可能的,还是我可以实现某种方法来实现它?谢谢
您需要定义隐式铸造运算符。这样的东西:
class ProgramOption
{
//...
public ProgramOptions(string str = null)
{
//...
if (!string.IsNullOrWhiteSpace(str))
{
/* store or parse str */
//...
}
}
//...
public static implicit operator ProgramOptions(string str)
{
return new ProgramOptions(str);
}
}
然后允许您这样的功能:
int myfunc(ProgramOption po = null)
{
po = po ?? new ProgramOptions(); //default value
//...
}
这样称呼:
myfunc("some text");
来自c#有默认参数吗?
在诸如C 之类的语言中,可以将默认值作为方法声明的一部分包括在内:
void过程(员工员工,布尔奖金= false)
...
C#没有此功能。
,但也
更新:
命名和可选(默认)参数从C#4.0开始。
命名和可选参数
Visual C#2010引入命名和可选参数。...可选参数使您能够省略某些参数的参数。
及以后
可选参数
- 恒定表达;
- 形式的新valtype()的表达式,其中valtype是一种值类型,例如枚举或结构;
- 表格默认值(valtype)的表达式,其中valtype是一个值类型。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 如何在参数中定义隐式类型转换的构造函数?
- 类模板实例化中的类型转换