请考虑以下代码段:
void Foo(object sender, EventArgs e)
{
if (!(sender is ComboBox comboBox)) return;
comboBox.DropDownWidth = 100;
}
Run Code Online (Sandbox Code Playgroud)
相比
void Bar(object sender, EventArgs e)
{
if ((sender is ComboBox comboBox) == false) return;
comboBox.DropDownWidth = 100;
}
Run Code Online (Sandbox Code Playgroud)
代码包括Foo()成功编译.Net 4.6.1,而代码包括Bar()结果Use of unassigned local variable 'comboBox'.
在没有讨论使用== false而不是使用否定运算符的原因的辩论中,有人可以解释为什么编译而另一个不编译?
我正在通过这篇MSDN文章试验跨页面发布.我有这个代码:
CrossPagePosting1.aspx
<form id="form1" runat="server">
<h1>Page 1</h1>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="CrossPagePosting2.aspx"/>
</form>
Run Code Online (Sandbox Code Playgroud)
CrossPagePosting2.aspx
<form id="form1" runat="server">
<h1>Page 2</h1>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
</form>
Run Code Online (Sandbox Code Playgroud)
CrossPagePosting2.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
TextBox TextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
Label1.Text = TextBox1.Text;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生了一个NullReferenceExceptionat Page.PreviousPage.为什么?
这是一个ASP.Net 4.0应用程序.
它使用FriendlyUrls,这是默认值.
注意:我不希望上一页是强类型的,例如使用PreviousPageType指令.根据引用的文章,这不应该是必要的.
在采访中,我被问到以下算法的时间复杂度:
static bool SetContainsString(string searchString, HashSet<string> setOfStrings)
{
for (int i = 0; i < searchString.Length; i++)
{
var segment = searchString.Substring(0, i + 1);
if (setOfStrings.Contains(segment))
{
var remainingSegment = searchString.Substring(segment.Length);
if (remainingSegment == "") return true;
return SetContainsString(remainingSegment, setOfStrings);
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我回答"线性",因为在我看来,只能通过searchString的长度循环.是的,它是递归的,但递归调用仅在字符串中尚未迭代的部分上,因此最终结果迭代次数是字符串的长度.
我的采访者告诉我,最坏情况下的时间复杂度是指数级的.
任何人都可以帮我澄清一下吗?如果我错了,我需要理解为什么.
我试图围绕分层应用程序架构,在经过相当多的阅读后,我想出了一些试图实现数据访问层/业务逻辑层/表示层方法的代码.代码完成了我的期望,但我希望得到一些关于我是否成功实现了这个想法的反馈,或者我的思考过程是否存在任何问题.
这是我将数据存储在的自定义对象:
public class SalesOrderMetaData
{
private bool isValid;
public bool IsValid
{
get { return isValid; }
set { isValid = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
表示层:
protected void Page_Load(object sender, EventArgs e)
{
// instatiate the BLL object
SalesOrderBLL salesOrderBLL = new SalesOrderBLL();
// reuest the custom object from the BLL
SalesOrderMetaData salesOrderMetaData = salesOrderBLL.GetSalesOrderMetaData("23447");
// present a value from the custom object to the user
Label1.Text = salesOrderMetaData.IsValid.ToString();
}
Run Code Online (Sandbox Code Playgroud)
业务逻辑层:
public class SalesOrderBLL
{
public SalesOrderMetaData GetSalesOrderMetaData(string csono) …Run Code Online (Sandbox Code Playgroud)