小编bra*_*olt的帖子

使用'== false'而不是否定运算符时,内联变量声明不会编译

请考虑以下代码段:

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而不是使用否定运算符的原因的辩论中,有人可以解释为什么编译而另一个不编译?

c# c#-7.0

11
推荐指数
1
解决办法
374
查看次数

为什么Page.PreviousPage始终为null?

我正在通过这篇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指令.根据引用的文章,这不应该是必要的.

asp.net webforms cross-page-posting

4
推荐指数
2
解决办法
1万
查看次数

为什么这个算法的时间复杂度呈指数级?

在采访中,我被问到以下算法的时间复杂度:

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的长度循环.是的,它是递归的,但递归调用仅在字符串中尚未迭代的部分上,因此最终结果迭代次数是字符串的长度.

我的采访者告诉我,最坏情况下的时间复杂度是指数级的.

任何人都可以帮我澄清一下吗?如果我错了,我需要理解为什么.

string algorithm big-o time-complexity

4
推荐指数
1
解决办法
160
查看次数

这是三层应用程序设计的良好实现吗?

我试图围绕分层应用程序架构,在经过相当多的阅读后,我想出了一些试图实现数据访问层/业务逻辑层/表示层方法的代码.代码完成了我的期望,但我希望得到一些关于我是否成功实现了这个想法的反馈,或者我的思考过程是否存在任何问题.

这是我将数据存储在的自定义对象:

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)

c# asp.net oop n-tier-architecture

3
推荐指数
1
解决办法
1421
查看次数