如何在 C# 中创建可重用的属性
How can I create reusable properties in C#
我通常在编码中做的是
string s = "1.0";
int i = Convert.ToInt32(s);
double d = Convert.ToDouble(s);
但我试图重新使用e“Convert.ToDouble(s)
”这个方法作为“s.ToDouble()
或s.ToInt()
".
可能吗?
如果可能的话,我该怎么做?
请指导我。
你的意思是你需要创建一个新类型 (class) 来拥有一个对象,而不是像这样调用方法 .ToInt()
。您可以创建一个扩展字符串 class 的 class,并向您的新 class 添加一个名为 ToInt()
的方法。此方法将 return 一个 Int32 值 (int),从主对象(您的字符串扩展对象)中获取值。
这不是一个好主意,因为正如您所说,您有 Convert 方法。但只要你愿意,你也可以做到。
这对你有帮助吗?
看来,您正在寻找 extensions methods,例如:
public static class MyConvertibleExtensions {
public static double ToDouble<T>(this T value) where T : IConvertible {
if (value is null)
throw new ArgumentNullException(nameof(value));
return Convert.ToDouble(value);
}
}
有了这个实现你可以把
double d1 = "123".ToDouble();
double d2 = true.ToDouble();
但是请注意,Convert.ToDouble(...)
是将一种类型转换为另一种类型的更自然的方式。
我通常在编码中做的是
string s = "1.0";
int i = Convert.ToInt32(s);
double d = Convert.ToDouble(s);
但我试图重新使用e“Convert.ToDouble(s)
”这个方法作为“s.ToDouble()
或s.ToInt()
".
可能吗? 如果可能的话,我该怎么做? 请指导我。
你的意思是你需要创建一个新类型 (class) 来拥有一个对象,而不是像这样调用方法 .ToInt()
。您可以创建一个扩展字符串 class 的 class,并向您的新 class 添加一个名为 ToInt()
的方法。此方法将 return 一个 Int32 值 (int),从主对象(您的字符串扩展对象)中获取值。
这不是一个好主意,因为正如您所说,您有 Convert 方法。但只要你愿意,你也可以做到。
这对你有帮助吗?
看来,您正在寻找 extensions methods,例如:
public static class MyConvertibleExtensions {
public static double ToDouble<T>(this T value) where T : IConvertible {
if (value is null)
throw new ArgumentNullException(nameof(value));
return Convert.ToDouble(value);
}
}
有了这个实现你可以把
double d1 = "123".ToDouble();
double d2 = true.ToDouble();
但是请注意,Convert.ToDouble(...)
是将一种类型转换为另一种类型的更自然的方式。