我很难以与从 VB.NET 模块调用函数类似的方式从 C# 类调用函数。
我有一个 C# 类 General.cs
using System;
namespace XYZ.Classes
{
public static class General
{
//Object Null to Empty Function
public static string NullToEmpty(object obj)
{
var returnString = "";
if (obj != null)
{
returnString = obj.ToString();
}
return returnString;
}
}
}
这种类型的函数可以在项目中的任何地方在 VB.NET 中调用,而无需声明模块或为调用添加前缀 - 只需使用
dim x as String = NullToEmpty(obj) - VB.NET
var x = NullToEmpty(obj) - C#
从我的谷歌搜索来看,似乎具有公共静态方法的公共静态类可能能够在 C# 中完成此操作。
C# 示例:
类 foo.cs
namespace XYZ.Classes
{
public class Foo
{
public string doFoo()
{
var obj = null;
var foolish = NullToEmpty(obj);
return foolish;
}
}
}
该函数显示在智能感知中(使用 ReSharper) - 但它无效(红色),因此没有正确引用某些内容 - 我只是在猜测......
关键是能够简单地使用常见的“用户定义”实用程序函数来进行空捕获、格式化等... - 这样就不必将各种东西包装在丑陋的 C# 代码中,如下所示:
obj.FooField = dr["Foo"] == null ? "" : dr["Foo"];
更喜欢:
obj.FooField = NullToEmpty(dr["Foo"]);
这对于 DateTime 应用程序变得更加有用:
obj.ActivityStartDate = dr["ActivityStartDate"] == null ? "" : Convert.ToDateTime(dr["ActivityStartDate"]).ToString("yyyy-MM-dd HH:mm:ss");
与:
obj.ActivityStartDate = GetDate(dr["ActivityStartDate"]);
或整数转换:
cmd.Parameters["@BirthdayDay"].Value = String.IsNullOrEmpty(obj.BirthdayDay) ? 01 : Convert.ToInt32(obj.BirthdayDay);
与:
cmd.Parameters["@BirthdayDay"].Value = NullToZero(dr["obj.BirthdayDay"]);
一些 C# 大师必须知道这一点:-)
谢谢