我试图创建一个三元表达式,我收到以下错误
"无法确定条件表达式的类型,因为LiveSubscription和DisconnectedSubscription之间没有隐式转换"
同样的逻辑在if语句中起作用,但我想理解为什么它不能在三元表达式中起作用 -
以下是我要做的事情的要点:
public interface IClientSubscription
{
bool TryDisconnect();
}
public class LiveSubscription : IClientSubscription
{
public bool TryDisconnect()
{
return true;
}
}
public class DisconnectedSubscription : IClientSubscription
{
public bool TryDisconnect()
{
return true;
}
}
public class ConnectionManager
{
public readonly IClientSubscription Subscription;
public ConnectionManager(bool IsLive)
{
// This throws the exception
Subscription = (IsLive)
? new LiveSubscription()
: new DisconnectedSubscription();
// This works
if (IsLive)
{
Subscription = new LiveSubscription();
}
else
{
Subscription …Run Code Online (Sandbox Code Playgroud) C#的新手,所以我遇到了一个简短的陈述问题.我想转换......
if (m_dtLastLogin == null)
drow["LastLogin"] = DBNull.Value;
else
drow["LastLogin"] = m_dtLastLogin;
Run Code Online (Sandbox Code Playgroud)
至
drow["LastLogin"] = (m_dtLastLogin == null) ? System.DBNull.Value : m_dtLastLogin;
Run Code Online (Sandbox Code Playgroud)
长版本工作得很好,但是,简写版本会生成错误"无法确定条件类型,因为'System.DBNull'和'System.DateTime?'之间没有隐式转换." 我的支持代码基本上是......
private DateTime? m_dtLastLogin;
m_dtLastLogin = null;
DataRow drow;
drow = m_oDS.Tables["Users"].Rows[0];
Run Code Online (Sandbox Code Playgroud)
有人可以用这个简短的手帮我吗?