Мне сложно вызвать функцию из класса C# аналогично тому, как я вызываю функцию из модуля VB.NET.C# Static Class vs VB.NET Использование модуля
У меня есть 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#
Из моего googling, кажется, что открытый статический класс с общедоступными статическими методами может выполнить это в C#.
C# Пример:
класса foo.cs
namespace XYZ.Classes
{
public class Foo
{
public string doFoo()
{
var obj = null;
var foolish = NullToEmpty(obj);
return foolish;
}
}
}
Функция показывает в IntelliSense (с помощью ReSharper) - но это не действует (красный), так что-то правильно не ссылаться - я m just guessing ...
Точка в состоянии просто использовать общие функции «User Defined» для нулевого захвата, форматирования и т. д. - чтобы не обертывать все виды вещей в уродливые 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# гуру должен знать это :-)
Благодаря
Вы попробовали 'General.NullToEmpty'? В C# вам нужно включить имя класса при вызове статического метода извне класса (если не метод расширения). – Oded