C# 尝试学习如何编写使用泛型类型的方法
我试图教会自己在创建方法时尽可能利用泛型类型。 是否可以将这两个方法组合成一个使用泛型类型的方法C# 尝试学习如何编写使用泛型类型的方法,c#,generics,C#,Generics,我试图教会自己在创建方法时尽可能利用泛型类型。 是否可以将这两个方法组合成一个使用泛型类型的方法 private Decimal? NullDec(string val) { return String.IsNullOrEmpty(val) ? (Decimal?)null : Convert.ToDecimal(val); } private Int32? NullInt(string val) { return String.IsNullOrEmpty(val) ? (In
private Decimal? NullDec(string val)
{
return String.IsNullOrEmpty(val) ? (Decimal?)null : Convert.ToDecimal(val);
}
private Int32? NullInt(string val)
{
return String.IsNullOrEmpty(val) ? (Int32?)null : Convert.ToInt32(val);
}
可以使用实现类似于您的方法的东西,但我不确定它是否可取:
使用系统;
名称空间示例
{
内部课程计划
{
公共静态void Main(字符串[]args)
{
var@int=Foo(“3”);
var@double=Foo(“3.14”);
var dateTime=Foo(“2016年2月1日”);
十进制变量=Foo(“3.1”);
WriteLine($“{@int}是一个{@int.GetType()}”);
WriteLine($“{@double}是一个{@double.GetType()}”);
WriteLine($“{dateTime}是一个{dateTime.GetType()}”);
WriteLine($“{@decimal}是一个{@decimal.GetType()}”);
Console.ReadLine();
}
公共静态T?Foo(字符串val),其中T:struct,IConvertible
{
返回字符串.IsNullOrEmpty(val)?null:将.ChangeType(val,typeof(T))转换为T?;
}
}
}
我为你写了一些代码
试试这个
public class NullTest
{
public T Null<T>(string val, Func<string, T> func)
{
return func(val);
}
}
public class TestConvert
{
public int? ConvertToInt32Null(string val)
{
if (string.IsNullOrWhiteSpace(val))
return null;
return Convert.ToInt32(val);
}
public decimal? ConvertToDecimalNull(string val)
{
if (string.IsNullOrWhiteSpace(val))
return null;
return Convert.ToDecimal(val);
}
}
class Program
{
static void Main(string[] args)
{
var test = new NullTest();
var converter = new TestConvert();
int? t1 = test.Null("2", converter.ConvertToInt32Null);
decimal? t2 = test.Null("", converter.ConvertToDecimalNull);
}
}
公共类空值测试
{
公共T Null(字符串val,Func Func)
{
返回函数(val);
}
}
公共类TestConvert
{
public int?ConvertToInt32Null(字符串val)
{
if(string.IsNullOrWhiteSpace(val))
返回null;
返回Convert.ToInt32(val);
}
公共十进制?ConvertToDecimalNull(字符串val)
{
if(string.IsNullOrWhiteSpace(val))
返回null;
返回Convert.ToDecimal(val);
}
}
班级计划
{
静态void Main(字符串[]参数)
{
var test=新的NullTest();
var converter=newtestconvert();
int?t1=test.Null(“2”,converter.ConvertToInt32Null);
十进制数?t2=test.Null(“,converter.ConvertToDecimalNull);
}
}
public class NullTest
{
public T Null<T>(string val, Func<string, T> func)
{
return func(val);
}
}
public class TestConvert
{
public int? ConvertToInt32Null(string val)
{
if (string.IsNullOrWhiteSpace(val))
return null;
return Convert.ToInt32(val);
}
public decimal? ConvertToDecimalNull(string val)
{
if (string.IsNullOrWhiteSpace(val))
return null;
return Convert.ToDecimal(val);
}
}
class Program
{
static void Main(string[] args)
{
var test = new NullTest();
var converter = new TestConvert();
int? t1 = test.Null("2", converter.ConvertToInt32Null);
decimal? t2 = test.Null("", converter.ConvertToDecimalNull);
}
}