我有一个C#方法,可以返回一个对象。我更喜欢这种方法不会抛出任何异常。
我的问题是,是否可以让方法返回null并因此在没有进一步警告的情况下将空检查责任交给调用者?
被调用者是否应该假定对象可能为null,只是因为它是引用类型? (并且引用类型的默认值为null: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/null)
请参阅下面的示例
// this method is expected to return an object
public MyClass getObject()
{
MyClass myObject = null;
// Another option would be to initialize to a new instance, calling the default constructor and not setting any properties
// MyClass myObject = new MyClass(); // no null check needed by the caller, but it is a pretty useless object
try
{
// just as an example
myObject = new MyClass();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return myObject; // will return null when and exception occured
}
public class MyClass
{
public int id { get; set; }
public string name { get; set; }
}
答案 0 :(得分:0)
是的,您可以返回null
同样正在进行的操作,在这种情况下,调用者在尝试访问对象的任何属性之前检查是否存在无效性。使用C#6语法
muobject?.Age
每种模式可以使用Null Object Pattern
;在这种情况下,您返回一个空对象而不是返回null
。因此,即使来电者出错,它也不会被NullRefException
炸毁。出于验证目的,您可以检查属性值,如if(string.IsNullOrEmpty(myobject.name)) ....