小编Cuc*_*ser的帖子

为什么在复制之后原始对象发生了变化,而不使用ref参数?

在工作中,我们遇到了一个问题,即在通过方法发送副本后原始对象发生了变化.我们确实通过IClonable在原始类中使用找到了解决方法,但是因为我们无法找到它首先发生的原因.

我们编写了这个示例代码来重现问题(类似于我们的原始代码),并希望有人能够解释它为什么会发生.

public partial class ClassRefTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var myclass = new MyClass();
        var copy = myclass;
        myclass.Mystring = "jadajadajada";
        Dal.DoSomeThing(copy);

        lit.Text = myclass.Mystring; //Text is expected to be jadajadajada, 
                                       but ends up to be referenced
    }
}

public class MyClass
{
    public string Mystring { get; set; } 
}

public static class Dal
{
    public static int? DoSomeThing(MyClass daclass)
    {
        daclass.Mystring = "referenced";
        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在DoSomething() …

c# asp.net reference

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

以编程方式查找sql​​ server的所有实例

我知道有很多类似于这个的主题,但没有一个提供我正在寻找的正确答案.

我正在努力在我们的网络上收集所有SQL-Server实例.它应该能够检测正在运行的SQl-Server的版本.我们运行的不同版本在' SQL Server 2000'和' SQL Server 2008 R2' 之间有所不同

为了给你一些背景信息,目前我正在我们的本地网络上开发,但稍后它将在我们的服务器上运行以收集信息.

收集的一些信息是:

  • 应用程序池
  • iis安装
  • 服务器上的所有数据库
  • 以及更多像这样的东西

通过WMI查询,以上所有工作都没有问题.但我无法通过WMI或Visual Studio 2010中的命名空间获取正确的SQl-Server实例.

我根据其他解决方案在stackoverflow和其他站点周围发现的一些事情:

  1. WMI,使用不同的命名空间,例如root\\Microsoft\\SqlServer\\ComputerManagement10使用ServerSettings类.但这只给SQLSERVER和SQLEXPRESS提供了版本号.让它变得毫无用处.
  2. 我也尝试过root\\CIMV2 Win32_Product包含sql子句的地方.但这会返回比我正在寻找的更多的数据.此外,查询本身非常慢.
  3. 后来我在Visual Studio中找到了一些类SqlDataSourceEnumerator,例如.虽然这仅在某个服务正在运行且某些端口处于打开状态时才有效.由于可能的安全问题和可能的错误数据,我们最好不要这样做
  4. 我还看到一些人引用了一些其他命名空间(一旦我再次找到它们就会将它们写在这里),但msdn表示我们将在不久的将来删除这些命名空间.

总结一下:我需要检索SQL-Server域的所有已安装实例,其版本在2000和2008 R2之间变化.

c# sql-server wmi

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

为什么删除"throw"语句导致"使用未分配的局部变量"编译错误?

在开展项目时,我发现了一些我和我的同事都无法解释的行为.使用的代码简化如下:

public Foo DoSomethingWithFoo()
{
    Foo foo;
    try
    {
        foo = GetFoo();
    }
    catch (Exception e)
    {
        DbHandler.LogException(e);
        throw;
    }
    return foo;
}
Run Code Online (Sandbox Code Playgroud)

编译完全正常,但一旦我们删除throw;声明.我们得到一个编译错误:Use of unassigned local variable 'foo' 问题不是解决它,因为我们可以写Foo foo = null;.

我们知道在C#中局部变量没有默认值,这与赋值null不同.只是我们似乎无法弄清楚为什么删除throw语句会导致这种行为.虽然我确实找到了一些关于未定义变量的更多信息,但我还没有找到任何解释这个的信息.

那么这背后的解释是什么?

.net c# undefined

2
推荐指数
2
解决办法
85
查看次数

标签 统计

c# ×3

.net ×1

asp.net ×1

reference ×1

sql-server ×1

undefined ×1

wmi ×1